【问题标题】:Cross Domain GET request, hitting server but not getting response跨域 GET 请求,命中服务器但没有得到响应
【发布时间】:2013-06-30 07:59:35
【问题描述】:

我正在尝试为内联订阅小部件发出跨域 GET 请求(您在文本框中输入您的电子邮件地址,它会为您订阅邮件列表,而不会将您重定向到其他页面)。下面代码中的URL除了以json的形式发回信息外,应该是发email(信息会告诉你调用是否成功,输入的email格式是否正确,email已经在清单等)。下面的代码在执行时会生成一封电子邮件(恭喜,您在列表中),但我无法接收回信息(所以我无法告诉用户以正确的格式输入他们的电子邮件,他们的电子邮件已经在清单等)。我不太确定该怎么做——为了让它起作用,除了通话中的数据(电子邮件、list_number 和密钥)之外,我不能传递任何东西。根据我的测试,使用 jsonp dataType 将“回调”函数连接到 url——在我的例子中,添加它会破坏一切。

任何帮助将不胜感激。

$("subscribe-form").submit(function(e) {

    var email = $("input-EMAIL").val();
    e.preventDefault();
    $.ajax({
        type: "GET",
        crossDomain: true,
        jsonp: false,
        url: "https://inserturlhere/maillistsubscriber/listSubscribe",
        data: { email: email, list_number: '#######', key: '#encoded#'},
        success:function(){
            alert("An Error Occurred. Try Again :( ");
    },
        error: function () {
            $('div.invitation').html("<br><p>Thank you for submitting! Check your inbox every Friday for the newsletter!</p>")
            .hide()
            .fadeIn(750);
        }
    });
    return false;
});

【问题讨论】:

  • 如果您在此处需要任何答案,您可能希望缩短那段巨大的段落 :)
  • 我假设您只是粘贴错误的代码,但您的成功和错误处理程序是相反的。
  • 您是否监控过实际的网络流量以查看请求/响应是什么?
  • 响应的工作方式是 {error: false} 成功,{error: InvalidEmail} 等。很奇怪,是的,但这就是后端的设置方式
  • 如果你的服务器在数据中返回一个带有 {error: false} 的 200 响应,jquery 将执行成功块,而不是错误

标签: jquery ajax cross-domain get-request


【解决方案1】:

如果这是通过不同的域简单的 ajax 将不起作用。

你可以试试

jQuery.ajax({
            url: BotMind.messagingUrl+"send",
            crossDomain: true,
            dataType: "jsonp",
            type: "GET",

            complete: function(){
                //alert('complete message');
            },
            success: function(data, textStatus, jqXHR){
                $('div.invitation').html("<br><p>Thank you for submitting! Check your inbox every Friday for the newsletter!</p>")
                .hide()
                .fadeIn(750);

            },
            error: function () {
                alert("An Error Occurred. Try Again :( ");
    },
            statusCode: {
                404: function() {
                    //alert("page not found");
                },
                200: function() {
                    //alert("page ok");
                }
            }
        });

这肯定会奏效

【讨论】:

    猜你喜欢
    • 2015-11-21
    • 2021-03-20
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多