0

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

代码非常简单:

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 调用中的固定功能,仍然没有运气。

4

2 回答 2

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?") }
);
于 2013-05-10T13:55:58.133 回答
0

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

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

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

于 2013-05-10T13:51:24.717 回答