2013-05-10 5 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

ли ваш код чтения 'функция {Alert ("! УСПЕХ");}' или 'функция() {Alert ("! УСПЕХ");}'? Эти скобки важны. – Gareth

+0

Кстати, что такое структура Ajax? выглядит красиво и просто. – Goodwine

+0

@Gareth извините, он читает функцию() {alert («УСПЕХ!»);} –

ответ

0

Вы вызываете предупреждения. Вы не передаете их по ссылке. Он должен выглядеть так:

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

Он пытается передать возвращаемое значение предупреждения. Вместо самой фактической функции.

+0

Да, извините, возможно, это был плохой пример. Даже когда я передаю его как функцию, называются успех и неудача. Посты Ajax, после чего сообщение об отказе появляется на полсекунды. –

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, после чего сообщение об отказе появляется на полсекунды. –

Смежные вопросы