未捕获的TypeError:响应不是函数

时间:2015-10-14 05:24:35

标签: javascript jquery ajax

我正在尝试获取此网址的响应。但是,当我检查控制台时出现错误消息:

  

未捕获的TypeError:响应不是函数

可能出现的问题是什么?

var uri = pbxApi+"/conference/participants/"+circle+"/"+data.conference+"/"+data.uniqueid+'?jsonp=response';
getJsonData(uri, function(res){
});

这是我的功能。

var getJsonData = function(uri,callback){
    $.ajax({
        type: "GET",
        dataType: "jsonp",
        url: uri,
        jsonpCallback: 'response',
        cache: false,
        contentType: "application/json",
        success: function(json){
            callback(json);
        }
    });
}

这是我的回答:

response({"_id":"56177d3b3f2dc8146bd8565c","event":"ConfbridgeJoin","channel":"SIP/192.168.236.15-0000005e","uniqueid":"1444379955.224","conference":"0090000293","calleridnum":"0090000290","calleridname":"0090000290","__v":0,"status":false,"sipSetting":{"accountcode":"0302150000","accountcode_naisen":"203","extentype":0,"extenrealname":"UID3","name":"0090000290","secret":"Myojyo42_f","username":"0090000290","context":"innercall_xdigit","gid":101,"cid":"0090000018"}})

3 个答案:

答案 0 :(得分:2)

正如here所写:

  

sonpCallback   类型:字符串或函数()   指定JSONP请求的回调函数名称。将使用此值代替jQuery自动生成的随机名称。最好让jQuery生成一个唯一的名称,因为它可以更容易地管理请求并提供回调和错误处理。如果要为GET请求启用更好的浏览器缓存,可能需要指定回调。从jQuery 1.5开始,你也可以使用一个函数进行这个设置,在这种情况下,jsonpCallback的值被设置为该函数的返回值。

因此,通过设置ajax对象的jsonpCallback属性,您将传递一个函数的名称(或来自 jQuery 1.5 的函数本身),该名称应被视为回调。这意味着如果将其值设置为'response',则应声明response()函数。

答案 1 :(得分:0)

工作示例:

// first declare you function
function response(obj){console.log(obj)};  

$.ajax({ 
  url:'http://www.mocky.io/v2/561dedcb1000002811f142e5', 
  dataType:'jsonp', 
  jsonp:false, // make it to false, to use your function on JSON RESPONSE
  jsonpCallback: 'response',
  success: function(ret){
    console.log('ok');
  }
});

设置demo here

答案 2 :(得分:0)

只需使用此类型的编码即可返回您的回调数据。

 function getJsonData(uri,callback)
  {
     $.ajax({
       type: "GET",
       dataType: "json",
       url: uri,
       cache: false,
       success: function(json){
         callback(json);
                }
      });
  }
      getJsonData(function(resp)
         {
          console.log(resp);
         }

现在你在console.log中得到了返回数据