В ответ jsonp перезаписывает первое значение со вторым значением

109
11

Это мой код jsonp, в котором я получаю данные с онлайн-сервера и хочу показывать в своих двух div, которые являются заголовком и описанием. Но код заменяет мой первый div последним содержимым, загруженным ajax_reponse.

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).")";

?>

спросил(а) 2021-01-19T18:16:30+03:00 6 месяцев, 1 неделя назад
1
Решение
64

Имеет смысл, что он это делает, потому что ваш код говорит ему:

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

Ваш должен быть для каждого:

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

Ваш код говорит о замене innerHTML значением, которое вы получили от сервера.

Если ваша жалоба заключается в том, что ответ является ответом LAST, ваш запрос кэшируется сервером.

ответил(а) 2021-01-19T18:16:30+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема