无法从成功函数中的ajax调用中获取响应

时间:2013-12-27 13:23:40

标签: javascript jquery ajax

在引用此堆栈链接Ajax response not calling success:function() when using jQuery 1.8.3之后,我想知道为什么如果我取消注释数据类型行,则不会调用success函数。我可以理解dataType = JSON没有调用成功函数。可能有人帮助我吗?< / p>

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);

3 个答案:

答案 0 :(得分:0)

如果没有传递成功功能,请输入错误功能。通过这种方式,您将能够看到错误并了解正在发生的事情。

您还可以打开开发者控制台并查看“网络”面板。

答案 1 :(得分:0)

假设您正在呼叫callBackFunctiontest,那么应该调用doAjaxCall

当范围内没有名为data的变量时,您尝试使用data。它将抛出一个未定义的异常,doAjaxCall将不会被执行。所以你的AJAX请求永远不会被发送。

尝试删除console.log('callBackFunctionTest : ' +data);,或为data传递一个值。

答案 2 :(得分:0)

我正在使用Express JS Web框架和NodeJS,它们都是最新版本-4.x.x。

问题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); 附言-e.preventDefault()实际上是出于其他目的而构建的,但之所以有用,是因为它阻止了链接跟随URL的出现,而URL正是解决上述问题的方法。