好吧,我不是100%肯定我在这里做错了什么。也许我只需要第二双眼睛来揭示我的方式的错误。我正在使用jQuery从一个域(https://customerhub.net)向我的域(https://dankennedy.com)上的PHP脚本发送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"})
知道我的严重错误是什么吗?
答案 0 :(得分:0)
您将无法在FireBug中调试getJSON成功函数代码,但这是预期的。您应该看到的内容(如果您查看FireBug中的源代码)是在html头中注入的脚本标记。这是否正确发生? 并尝试这样做以查看响应是否通过 - 从服务器返回一个字符串,例如“alert('test')”:
$fullResponse = 'alert("test")';
echo $fullResponse;
警报是否会触发?
答案 1 :(得分:0)
我弄清楚问题是什么。无论出于何种原因,我应该使用的回调是“JSONcallback”而不是“jsoncallback”。考虑到查尔斯的想法以及我在另一个论坛上发现的关于将“JSON”资本化的建议,我想我会试一试。工作就像一个魅力。谢谢你的帮助!