2014-06-15 110 views
0

这是我的jsonp代码,其中我从在线服务器获取数据并希望在我的2个div中显示哪些是标题和说明。但代码是用ajax_reponse加载的最后一个内容替换我的第一个div。作为回应jsonp用第二个值覆盖第一个值

function ajax_request() { 
    jsonp("http://example.com/jSonApi/json_data.php", 
     "ajax_response"); 
} 

/**Response (Called when data has been retrieved) 
* 
* @param object data Javascript (JSON) data object received 
*       through <script> request 
*/ 
function ajax_response(data) { 
    for(var key in data) { 
     document.getElementById("first").innerHTML=data[key]; 
    } 
} 

function jsonp(url, callback) 
{     
    if (url.indexOf("?") > -1) { 
     url += "&jsonp="; 
    } 
    else { 
     url += "?jsonp="; 
    } 
    url += callback + "&"; 
    url += new Date().getTime().toString(); // prevent caching   

    var script = document.createElement("script");   
    script.setAttribute("src",url); 
    script.setAttribute("type","text/javascript");     
    document.getElementsByTagName('head')[0].appendChild(script); 
} 

这是我的PHP代码

<?php 
// Connection to the database 
include("connection.php"); 
    $startQuery = mysql_query("select * from image_gallery where recid=474") or die (mysql_error()); 
    if (mysql_num_rows($startQuery)>0){ 
     $rs=mysql_fetch_array($startQuery); 
      $title = $rs["gallerytitle_en"]; 
      $descp =trim(preg_replace('/\s\s+/', ' ', $rs["gallerydescp_en"])); 
      $jsonData=array("data_1" => $title , "data_2" => $descp); 

     } 
    mysql_free_result($startQuery); 
echo $_REQUEST["jsonp"]."(".json_encode($jsonData).")"; 


?> 
+0

使用'appendChild()'方法代替'innerHTML' – hindmost

回答

0

这是有道理的,是它这样做,因为你的代码是它告诉给:

document.getElementById("first").innerHTML=data[key]; 

您的应该是每个:

for each(var key in data) { 
    document.getElementById("first").innerHTML=data[key]; 
} 

你的代码说repl使用您从服务器获得的值获得innerHTML

如果您的投诉是答复是最后响应,那么您的请求将被服务器缓存。

相关问题