簡體   English   中英

無法從成功函數中的 ajax 調用獲得響應

[英]Unable to get the response from an ajax call in the success function

引用此堆棧鏈接Ajax response not call success:function() when using jQuery 1.8.3我想知道為什么如果我取消注釋數據類型行,成功函數不會被調用。我可以理解 dataType =JSON 沒有調用成功函數。可以有人幫我嗎?

function doAjaxCall(methodType,Url,params,requestType,callBackFunction)
{
    if(validate.variable(Url) && validate.variable(params))
    {
        $.ajax({
             type       :   methodType,
             url        :   Url,
//           dataType   :   'JSON', //if i uncomment i am not getting the response under     success
             data       :   params,
             success    :   function(data)
             {
                console.log(data);
                    callBackFunction(data);
             }
     });
}
}

function callBackFunctiontest(data)
{
    console.log('callBackFunctiontest : ' +data);

 }
doAjaxCall('GET','/getData?accountNumber=9840100672&oid=d11c9f66-4c55-4855-a99e-580ba8ef8d61','noparams','application/JSON',callBackFunctiontest);

如果它沒有傳入成功函數,則放置一個錯誤函數。 通過這種方式,您將能夠看到錯誤並了解發生了什么。

您還可以打開開發者控制台並查看“網絡”面板。

假設您正在調用callBackFunctiontest ,然后應該調用doAjaxCall

當范圍內沒有名為data變量時,您正在嘗試使用data 它會拋出一個未定義的異常並且doAjaxCall不會被執行。 所以你的 AJAX 請求永遠不會被發送。

嘗試擺脫console.log('callBackFunctionTest : ' +data); ,或傳遞給它一個data值。

我正在使用 Express JS Web 框架和 NodeJS,兩個都是最新版本 - 4.xx

問題 #1 - 並非我所有的 POST ajax 調用都被發送到我的 NodeJS 服務器代碼。 我是通過嘗試使用 Postman POST 發現的。 所有 POSTMAN 調用請求都由服務器代碼接收,但不是 Express 客戶端請求。 我通過打印 console.log 服務器調試語句進行檢查,以比較 POSTMAN 和 Express Client 之間的發現。

問題 #2 - 即使服務器響應狀態為 200 OK,我也從未收到任何來自服務器的響應消息。 對於這兩個問題,我做了一些更改,我相信這會對其他人有所幫助。

  1. 在 ajax 調用中,我添加了 e.preventDefault(); 其中“e”是通過#click/#onclick 觸發的事件。
  2. 在 ajax 函數調用中,我添加了參數 dataType: 'json'。
  3. 在 NodeJS 服務器代碼 index.js 中,我替換了 res.send(req.body.search_data); 與 res.json(req.body.search_data); PS - e.preventDefault() 實際上是為不同的目的而構建的,但它有幫助,因為它可以防止鏈接跟隨解決上述問題的 URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM