ajax jsonp请求 - 没有回应

时间:2011-08-19 19:46:54

标签: jquery ajax jsonp

首先喜欢这个资源 - 现在已经使用它并学习了几年。这是我的第一篇文章,因为我真的被卡住了。我通过ajax / jsonp提交表单。如果我在本地运行此脚本 - 我会从域中获得一个带有成功代码的响应。如果我只是在浏览器中运行请求,它会给我回复成功代码。但是当我提交我的表格时 - Firebug给我的红色200 OK,而服务器没有响应。 Safari让我无法加载资源:已取消。无法找到关于错误的大量文档,所以我已经停止了。我知道这对你的专业人士来说可能非常恶心,但这是我的第一篇文章,所以任何指导都表示赞赏!网上有两个例子:http://www.yourlifeportal.com/register.php有reCaptcha的版本。 http://www.yourlifeportal.com/registerNew.php没有reCaptcha只是因为添加了验证码影响了我的代码。如果我只需要一脸咂舌让我知道。谢谢!

$.ajax({
        url: 'http://myURLonaDifferentDomain',
        data:jQuery(frm).serialize(),
        type: 'POST',
        dataType: 'jsonp',
        jsonp: 'jsonp',
        crossDomain: true,
        error: function (xmlHttpRequest, textStatus, errorThrown) {
                    if(xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0) 
          return;  // it's not really an error
     else
                alert(xmlHttpRequest + ': ' + textStatus + ': ' + errorThrown);
                    },
        success: function(jsonp) { 
            // Response handling code goes here
            console.log(json.response.responseCode + ': ' + json.response.response + ': ' + json.response.responseDescription);

            if (json.response.responseCode == 10527) { 
            document.getElementById('errorScreen').style.display='block';
            $('#errorMsg').append('There was an error with your credit card transaction please go back and re-check your ');

            } 
                    if (json.response.responseDescription == "Registration was successful") {

            window.location.replace("http://www.url.com/thankyou.php");             
            } 

        }
                        });


}

2 个答案:

答案 0 :(得分:0)

哈哈哈。跨域脚本。这是一个大问题。阅读解决方案here

编辑我重新阅读了这个问题并注意到您已经为跨域准备好了AJAX(虽然它通常会自动注意到);几乎可以肯定的是,您没有准备好远程Web服务器。使用Firebug,打开Net选项卡,查看特征CORS头的Response头。

答案 1 :(得分:0)

我有一个类似的问题,解决方案是JSONP响应必须包含在回调函数中。在这里回答:https://stackoverflow.com/a/10892749/498903