作为响应,jsonp用第二个值覆盖第一个值



这是我的jsonp代码,我从在线服务器获取数据,并希望在我的2div显示这是标题和描述。但是代码用ajax_response加载的最后一个内容替换了我的第一个div。

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('/ss+/', ' ', $rs["gallerydescp_en"]));
          $jsonData=array("data_1" => $title , "data_2" => $descp);
      }
  mysql_free_result($startQuery); 
echo $_REQUEST["jsonp"]."(".json_encode($jsonData).")";

?>

它这样做是有意义的,因为你的代码告诉它:

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

你的for应该是for each:

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

你的代码说用你从服务器得到的值替换innerHTML

如果您抱怨的是响应是LAST响应,那么您的请求正在被服务器缓存

相关内容

最新更新