这是我的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响应,那么您的请求正在被服务器缓存