没有调用Jquery回调

时间:2014-04-15 22:51:22

标签: php jquery ajax jsonp

我已经用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”}) 然而,抛出了未指示回调的错误。

2 个答案:

答案 0 :(得分:0)

请求在服务器端看起来如何?

我有一个与你所拥有的非常相似的工作示例。唯一的区别是我回复的内容类型是:

'text/javascript'

另外,我的JSONP消息最后包含一个分号(我认为这不是导致失败的原因)。

returnJSONP = $_REQUEST['callback']. '('.json_encode($data).');'; 

如果你能够解决,请你发布解决方案吗?

答案 1 :(得分:0)

我放弃了尝试使其工作,而是发布到本地php脚本,然后使用CURL发布到远程服务器。我将CURL结果回显给jQuery函数,一切运行良好。