繁体   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