2

我在处理来自 AJAX 的表单时遇到了一个奇怪的问题。

它按预期工作,但由于某种原因它会触发错误而不是成功。

这是代码:

$(".sendBtn").click(function(e) {

    campaigncode = "#####";
    senderemail = "test@email.com";
    subject = "Test";
    sendermessage = "Test";
    targetURL = "www.abc.com";

    email = $(".email").val();

    //Email Validation
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;  
    if( email ==""){//Empty Check
        alert('Please enter your email');
        e.preventDefault();
    } else {
        if(!emailReg.test( email )) {//Email validation
            alert('*Please enter valid email');
            e.preventDefault();
        } else {

    //Ajax Start
    $.ajax({
            url: "http://services.ninemsn.com.au/sendtofriend/sendtofriendService.aspx?showdefaultmessage=true",
            context: document.body,
            type: "POST",
            data: {campaigncode:campaigncode, recipientemail:email, senderemail:senderemail, subject:subject, sendermessage:sendermessage, targetURL:targetURL},
            dataType: "jsonp",
            success: function() {
                alert('Success');
            },
                        error: function() {
                                    alert('Error');
                              }

        });//Ajax End

        }
    }

});
4

3 回答 3

2

从您的错误来看,这个问题那个问题看起来很相似。“未调用 jQuery_172blah”错误指的是 jsonp 回调(未调用该回调,因为在其他地方解析失败)。我建议...

  1. 尝试设置crossDomain: true,然后也设置dataType:textdataType:text json
  2. 尝试data作为字符串而不是字典传递。
  3. 尝试设置jsonp:falsejsonpCallback。请参阅有关这些的文档

例如:

var jsonString = JSON.stringify({
    recipientemail: email
});
$.ajax({
    url: "http://services.ninemsn.com.au/sendtofriend/sendtofriendService.aspx?",
    crossDomain: true,
    dataType: 'text json',
    data: jsonString,
    ...
于 2012-07-20T03:01:53.330 回答
0

错误在服务器中,使用“response . AllowGet”发送

于 2014-01-07T15:34:21.677 回答
0

JSONP 要求将响应包装在某种回调函数中。

尝试将响应记录到控制台以查看发回的内容

success: function(data) { console.log(data); }

另外,尝试使用 $.parseJSON 将响应包装到一个对象中:

success: function(data) {
    var json = $.parseJSON(data);
}
于 2012-07-20T03:40:55.087 回答