跨域GET请求,命中服务器但没有得到响应

时间:2013-07-02 19:33:15

标签: jquery ajax cross-domain get-request

我正在尝试为内联订阅小部件创建跨域GET请求(您在文本框中键入您的电子邮件地址,它会订阅您的邮件列表,而不会将您重定向到其他页面)。除了以json的形式发回信息之外,下面代码中的URL应该发送电子邮件(该信息将告诉您呼叫是否成功,输入的电子邮件是否格式正确,电子邮件已经在清单等)。下面的代码在执行时生成一封电子邮件(恭喜,您在列表中),但我无法收到回复的信息(因此我无法告诉用户以正确的格式输入他们的电子邮件,他们的电子邮件已经在清单等)。我不确定该怎么做 - 为了使其工作,除了调用中的数据(email,list_number和key)之外,我无法传递任何内容。根据我的测试,使用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;
});

1 个答案:

答案 0 :(得分: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");
                }
            }
        });

这肯定有用