Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:响应不是函数_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 未捕获类型错误:响应不是函数

Javascript 未捕获类型错误:响应不是函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在尝试获取此url的响应。但当我检查控制台时,会显示错误消息: 未捕获类型错误:响应不是函数 可能的问题是什么 var uri = pbxApi+"/conference/participants/"+circle+"/"+data.conference+"/"+data.uniqueid+'?jsonp=response'; getJsonData(uri, function(res){ }); 这是我的职责 var getJsonData = function(uri,callback

我正在尝试获取此url的响应。但当我检查控制台时,会显示错误消息:

未捕获类型错误:响应不是函数

可能的问题是什么

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"}})
正如上面所写的:

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

var getJsonData = function(uri,callback){
    $.ajax({
        type: "GET",
        dataType: "jsonp",
        url: uri,
        jsonpCallback: 'response',
        cache: false,
        contentType: "application/json",
        success: function(json){
            callback(json);
        }
    });
}
因此,通过设置ajax对象的
jsonpCallback
属性,您正在传递一个函数名(或来自jQuery 1.5的函数本身),该函数应被视为回调函数。这意味着如果将其值设置为
'response'
,则应声明
response()
函数

工作示例:

// 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');
  }
});

设置一个

只需使用这种类型的编码返回回调数据

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

现在您在控制台中获得了返回数据。log

检查我已经在代码中声明的
jsonpCallback:“response',
。只需提到,
success:function(json){callback(json);}
是renundat,如果我使用这个
success:callback(json)
,您可以简单地使用
success:callback(json)
而不是这个
success:function(json){callback(json);}
json将是未定义的