2013-03-20 44 views
0

新手到JQuery/JSON/AJAX所以請好。與發送阿賈克斯消息的問題

我已經把SO和其他網站上的例子拼湊在一起,但我很掙扎。

我已經創造了一些函數來處理Ajax響應...

function newOrderSuccess(response) { ... } 
function newOrderTimeout() { ... } 
function newOrderFail() { ... } 

...

這裏是AJAX調用:

function sendCallAjaxUsingJson(theUrl, theData, successCallbackFunction, timeoutCallbackFunction, otherErrorCallback, timeoutValueMilli) 
{ 
var successFn = successCallbackFunction; 
var timeoutFn = timeoutCallbackFunction; 
var otherFn = otherErrorCallback; 
if(!(typeof successFn === 'function') || !(typeof timeoutFn === 'function') || !(typeof otherFn === 'function')) 
     return false; 
$.ajax({ 
     type: "POST", 
     url: theUrl, 
     timeout:timeoutValueMilli, 
     dataType: 'json', 
     data: { json: JSON.stringify(theData) }, 
     success:successFn(result), 
     error: function(x, t, m) { 
        if(t==="timeout") { 
         timeoutFn(); 
        } else { 
         otherFn(); 
        } 
       } 
    }); 

}

我的代碼調用如下函數:

sendCallAjaxUsingJson("/ordertaker.php", 'submitOrder','newOrderSuccess', 'newOrderTimeout', 'newOrderFail',1000); 

結果是.....什麼也沒有。在上傳ordertaker.php文件之前,我正在使用newOrderFail()函數,但現在我什麼都沒有。

我哪裏錯了?

+0

請從您的瀏覽器控制檯發佈錯誤。什麼是'sendCallAjaxUsingJson'?它應該是「doCallAjaxUsingJson」嗎? – 2013-03-20 21:39:08

+0

什麼是什麼?您是否看到fiddler/firebug的外撥電話?或者它從未初始化該呼叫?如果你遇到錯誤,那是非常有價值的 – 2013-03-20 21:39:14

+0

@JacobParker對不起,我正在簡化我的代碼以刪除相關的組件。它應該是doCallAjaxUsingJson,如你所說。我更新了它。 – NEW2WEB 2013-03-20 21:42:34

回答

1

你傳入字符串sendCallAjaxUsingJson而不是功能,

sendCallAjaxUsingJson("/ordertaker.php", 'submitOrder',newOrderSuccess, newOrderTimeout, newOrderFail,1000); 

你也是調用你的Ajax調用你的成功函數,而該設置它。

success:successFn, 
+0

指出了一些項目,使我更加接近,現在它適用於超時,但我無法獲得成功函數的運行,現在只運行失敗(錯誤)函數。回聲陳述 - 所以不應該返回一個「成功」? – NEW2WEB 2013-03-21 03:30:27