Хорошо, я не уверен на 100%, что я делаю неправильно здесь. Может быть, мне просто нужна вторая пара глаз, чтобы выявить ошибку моих путей. Я отправляю запрос JSONP, используя jQuery из одного домена (https://customerhub.net) в PHP-скрипт в моем домене (https://dankennedy.com) и получая ответ от этого скрипта. Я знаю, что запрос работает, потому что в целях тестирования я печатаю все свои данные в файл перед отправкой ответа, и данные проходят. Однако по какой-либо причине функция обратного вызова не работает.Смуты с запросом JSONP
Вот код JQuery:
jQuery('#form1').validationEngine({
failure: false,
success: function(){
var url = 'https://dankennedy.com/test2.php?jsoncallback=?';
jQuery.getJSON(url, jQuery('#form1').serialize(), function(){
alert('I ran... for once');
});
return false;
}
});
Вот PHP код:
$callback = $_REQUEST['jsoncallback'];
$myFile = "info.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$data = '';
foreach($_REQUEST as $key => $value)
$data .= ", `".$key."` = \"".$value."\"";
$stringData = 'Array: ' . substr($data, 1);
fwrite($fh, $stringData);
$response = array('msg' => 'SUCCESS');
$fullResponse = $callback.'('.json_encode($response).')';
fwrite($fh, "\n".$fullResponse);
fclose($fh);
header('Content-type: text/plain');
echo $fullResponse;
В конце концов я буду делать больше с кодом и есть мой PHP доступ к скриптам мою базу данных и отправить обратно некоторые значимые данных, и моя функция jQuery выполняет некоторую обработку этих данных. Пока я просто печатаю материал и начинаю с малого, чтобы убедиться, что обмен информацией над JSONP работает.
Все выглядит хорошо. Я также следую коду в Firebug и вижу, как обрабатывается код. Запрос выполняется, но оператор предупреждения внутри не работает.
Это то, что файл записывается в распечатке:
Array 5: `jsoncallback` = "jsonp1277479829087", `id` = "", `type` = "blog", `task` = "add", `title` = "Brace Ford", `date` = "June 25, 2010 11:30 AM", `author` = "", `teaser` = "Teaser", `body` = "Body", `download` = "", `comments` = "", `__utma` = "119149980.718135870.1277328038.1277328038.1277386321.2", `__utmz` = "119149980.1277328038.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)", `SESS6c0bc6ae4aee7e8c564bc45425742fc0` = "tpc7lmtv551kg1vpuvo2c9efi1", `__utmv` = "119149980.authenticated user,s1a", `mifge` = "DKFrontPage", `__utmc` = "119149980"
jsonp1277479829087({"msg":"SUCCESS"})
Любой идее, что мой тяжкий ошибка есть?
Возможно, вам удастся использовать 'jQuery.ajax()' и построить вызов со всеми зарегистрированными обратными вызовами и посмотреть, какие вызовы вызываются. (Другими словами, попробуйте его как обычный запрос ajax без обратного вызова JSONP.) – Charles
Неплохая идея, пытающаяся использовать разные обратные вызовы. Тем не менее, мне все же приходится использовать обратные вызовы JSONP, потому что jQuery.ajax() с обычными обратными вызовами не работает в разных доменах. Запрошенная страница находится на странице gkic.customerhub.net, а моя страница php находится на dankennedy.com. По-прежнему можно попробовать разные обратные вызовы. Спасибо за предложение. –