我正在尝试对内联订阅小部件进行跨域GET请求(您可以在文本框中键入电子邮件地址,它会为您订阅邮件列表,而不会将您重定向到其他页面)。下面代码中的URL除了以json的形式发回信息外,还应该发送一封电子邮件(这些信息会告诉你通话是否成功,输入的电子邮件形式是否正确,电子邮件是否已经在列表中等)。下面的代码在执行时会生成一封电子邮件(恭喜你,你在名单上),但我无法收到回复信息(所以我无法告诉用户以正确的格式输入他们的电子邮件,他们的电子邮件已经在名单上了等等)。我真的不知道该怎么办——为了让它发挥作用,除了通话中的数据(电子邮件、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;
});
如果这是通过不同的域进行的,那么简单的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");
}
}
});
这肯定会起作用