2013-05-10 135 views
0

好的,所以这是一个奇怪的。我的Ajax调用似乎同时调用成功和失败。当我发送我的Ajax调用时,它会发送到数据库,但也会抛出错误消息。所以Ajax调用正在工作 - 只是带有错误消息。当我使用Fiddler检查问题时,请求发布为200(成功)。Ajax调用成功和失败

的代码非常简单:

var myDataObject = new Object(); 
myDataObject.one = $('#SomeTextBoxId').val; 
myDataObject.two = $('#SomeOtherTextBoxId').val   

// NOTE: AJAX is calling success and fail 
SendAjax("/ServiceHandlers/SomeHandler?HandlerName", myDataObject, function() { alert("SUCCESS!");}, function() {alert("FAILURE?");}); 

这里是SendAjax功能:

function SendAjax(postUrl, postData, successFunction, failureFunction) 
{ 
    /* 
    postUrl:   The URL to which the request will be posted 
    postData:   The JSON encoded input to be posted to the postUrl 
    successFunction: The function to be executed on a successful post 
    failureFunction: The function to be executed on a failed post 
    */ 

// Stringify the postData 
postData = JSON.stringify(postData); 

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: postUrl, 
    data: postData, 
    success: function (data, status, xhr) 
    { 
     successFunction(data, status, xhr); 
    }, 
    error: function (xhr, status, error) 
    { 
     failureFunction(xhr, status, error); 
    } 
}); 
} 

有什么建议?

编辑 - 修正了Ajax调用函数,仍然没有运气。

+1

您的代码是否读取了'function {alert(“SUCCESS!”);}'或'function(){alert(“SUCCESS!”);}'?这些括号非常重要。 – Gareth 2013-05-10 14:07:25

+0

顺便说一下,这是什么Ajax框架?看起来不错和简单。 – Goodwine 2013-05-10 14:10:56

+0

@Gareth对不起,它读取函数(){alert(“SUCCESS!”);} – 2013-05-10 14:13:26

回答

0

您正在调用警报。你没有通过引用传递他们。它应该看起来像

SendAjax("/ServiceHandlers/SomeHandler?HandlerName", myDataObject, 
    function() { 
     alert("SUCCESS!") 
    }, 
    function() { 
     alert("FAILURE?") 
    }); 

它试图传递警报的返回值。而不是实际的功能本身。

+0

是的,对不起,也许这是一个不好的例子。即使我将它作为函数传递,也会调用成功和失败。 Ajax帖子然后失败消息弹出半秒钟。 – 2013-05-10 13:59:58

1

事情是你发送函数的方式,因为参数是错误的。

当您“发送”alert("SUCCESS!")作为参数时,您不会发送它,而是调用它。

相反,您需要在旅途中创建容器功能。就像这样:

// You can make it a single line if you want, 
// I'm was just trying to separate it to look more clear 
SendAjax(
    "/ServiceHandlers/SomeHandler?HandlerName", 
    myDataObject, 
    function() { alert("SUCCESS!") }, 
    function() { alert("FAILURE?") } 
); 
+0

是的,对不起,也许这是一个不好的例子。即使我将它作为函数传递,也会调用成功和失败。 Ajax帖子然后失败消息弹出半秒钟。 – 2013-05-10 14:00:25