我已经用Google搜索了我能找到的这个错误的每个实例,并且没有一个解决方案适合我。从本质上讲,我正在做别人的建议。尽管如此,我收到一个错误,我的回调函数没有被调用。我正在使用Ajax / Jquery / JASONP使用GET进行跨域表单提交。这是我在表单方面的代码:
$(document).ready(function() {
$("#ajaxform1").submit(function(e){
e.preventDefault();
var surl = "http://blahblah/test_create_user.php?callback=?";
$.ajax({
type: 'GET',
url: surl,
crossDomain: true,
data: $('#ajaxform1').serialize(),
dataType: "jsonp",
success: function(msg) {
$.each(msg, function (index, value) {
if(value==1)
{
alert("New User Added");
} else {
alert("User Already Exists")
} }
});
},
error: function(xhr, status, error) {
var myerror = xhr+" "+status+" "+error;
alert("Failure Connecting to Kayako. Please Try Again("+myerror+")"); }
});
以下是我的PHP代码的适用代码段:
if($USER_CHK->first()->id){
$data = array('msg' => '0'); // user exists
else {
$data = array('msg' => '1'); // User added
}
//echo customerAdded(FALSE);
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Authorization,X- Requested- With');
header("Content-type: application/json");
$data = array('msg' => '0');
print $_REQUEST['callback']. '('.json_encode($data).')';
exit;
});
});
我的调试显示所有表单变量都已发布。 PHP代码返回:jQuery11020900643879813015_1397599599587({“msg”:“1”}) 然而,抛出了未指示回调的错误。
答案 0 :(得分:0)
请求在服务器端看起来如何?
我有一个与你所拥有的非常相似的工作示例。唯一的区别是我回复的内容类型是:
'text/javascript'
另外,我的JSONP消息最后包含一个分号(我认为这不是导致失败的原因)。
returnJSONP = $_REQUEST['callback']. '('.json_encode($data).');';
如果你能够解决,请你发布解决方案吗?
答案 1 :(得分:0)
我放弃了尝试使其工作,而是发布到本地php脚本,然后使用CURL发布到远程服务器。我将CURL结果回显给jQuery函数,一切运行良好。