Вызов AQAX JQuery возвращает JSONP, но не может получить доступ к данным JSON

Я хочу обработать данные, которые возвращаются в запросе JSONP, но у меня возникают трудности с вызовом. Почему следующий код не работает?

HTML-файл:

<!DOCTYPE html>
<html>
<head>
<title>Simple JSONP Test</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="lib/jquery.js"></script>
</head>
<body>
<div>Simple JSONP Test</div>
<script>
// alert('start');

$.ajax({
contentType: "application/json; charset=utf-8",
url: "http://www.myserver.com/simplejsontest.php",
dataType: "jsonp",
success: function (data, textStatus, jqXHR) {
alert('Success! data: ' + data);
},
error: function (xr, msg, e) { alert('Msg: ' + msg + ', error: ' + e + 'xr: ' + xr.toString()); }
});

</script>
</body>
</html>

и файл php simplejsontest.php:

<?php

$myData = array(
//array(
"id" => "1",
"Title" => "Dr.",
"firstName" => "John",
"lastName" => "King");
/*,
array(
"id" => 2,
"Title" => "Dr.",
"firstName" => "John",
"lastName" => "King")
);
*/

//echo $_GET['callback']."(".'{"users":'.json_encode($myData).'})';
echo $_GET['callback']."(". json_encode($myData). ')';
?>

-1

Решение

Я полагаю, я должен был быть более конкретным. Я думаю, что проблема, с которой он сталкивается, заключается в получении данных из ответа на то, что он может использовать на своей странице.

Я проверил это, и это работает.

Я использую «lastName», потому что это элемент в вашем массиве $ myData в PHP выше. Поскольку вы использовали переменную «data» в своем javascript, вы добавляете элемент «lastName», который вы определили в массиве php:

alert("last name: " + data.lastName);

Если вы хотите вернуть более одного результата для каждого элемента в вашем объекте, вы будете использовать многомерный массив и создадите какой-то счетчик, когда ответ вернется в javascript.

PHP:

$myData = array(
"id" => array(
0 => 1,
1 => 2
),
"title" => array(
0 => "Mr.",
1 => "Dr."),
"firstName" => array(
0 => "John",
1 => "Sara"),
"lastName" => array(
0 => "King",
1 => "Jones")
);

echo $_GET['callback']."(". json_encode($myData). ')';

Это jquery / javascript для циклического просмотра возвращаемых результатов. Для этого примера я просто добавляю фамилию в тело HTML:

success: function (data, textStatus, jqXHR) {
var i = 0;
do{
$('body').append(data.lastName[i++]);

}
while(i < data.id.length);
},
-1

Другие решения

Я думаю, что вы должны закодировать все данные с помощью функции json_encode. что-то вроде этого:

json_encode($myData)

Или же

json_encode($_GET['callback']."(". $myData. ')');
-1

По вопросам рекламы [email protected]