Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 如何使用错误响应进行JSON api调用?_Javascript_Json_Api - Fatal编程技术网

Javascript 如何使用错误响应进行JSON api调用?

Javascript 如何使用错误响应进行JSON api调用?,javascript,json,api,Javascript,Json,Api,我使用Javascript通过JSON api调用检索粘贴在特定过滤器中的活动产品的数量。 我的电话回复是 {“总计”:34,“产品ID”:[“产品1”、“产品2”、…”] 当产品存在时,我的脚本工作正常,但当没有任何产品处于活动状态时,响应将为: {“错误”:“未找到任何产品,请检查请求设置”} 在这种情况下,脚本将崩溃 我试图做的是在出现错误时将varNumEdPicks设置为0,但我真的不知道脚本在找不到“total”时是如何崩溃的 这就是脚本的检索部分的外观 //检索 var url

我使用Javascript通过JSON api调用检索粘贴在特定过滤器中的活动产品的数量。 我的电话回复是

{“总计”:34,“产品ID”:[“产品1”、“产品2”、…”]
当产品存在时,我的脚本工作正常,但当没有任何产品处于活动状态时,响应将为:

{“错误”:“未找到任何产品,请检查请求设置”}
在这种情况下,脚本将崩溃

我试图做的是在出现错误时将var
NumEdPicks
设置为
0
,但我真的不知道脚本在找不到“total”时是如何崩溃的

这就是脚本的检索部分的外观

//检索
var url='1〕http://api.jetlore.com/products/products_by_filter.json?jl_cid=“+clientID+”&filter='+filterName+”&per_page='+maxCount+'&page=1';
var response=HTTP.Get(url);
var responseObj=Platform.Function.ParseJSON(响应[“内容]);
var NumEditorsPick=响应bj.total;
如果(NumEditorsPick>maxCount){var NumEditorsPick=maxCount;}
当我得到错误响应时,我想将
NumEditorsPick
设置为0。 有些事情我一直在想,但是没有用:

var NumEditorsPick=responseObj.total | | 0

var NumEditorsPick='total'在responseObj中?responseObj.total:0
没有总计时如何定义
NumEditorsPick

到目前为止,我已经尝试过:

if (responseObj.hasOwnProperty('total')){
  var NumEditorsPick = responseObj.total;
}else{
  var NumEditorsPick = 0;
}

两者都会破坏我脚本的执行,所以我开始认为,当出现错误响应时,它会停止脚本并忽略其余部分,这可能吗?在这种情况下,如何忽略此错误响应

编辑: 在使用了评论中建议的try/catch方法之后,我终于成功地实现了:

var NumEditorsPick;

  try {
    var response = HTTP.Get(url);
    var responseObj = Platform.Function.ParseJSON(response["Content"]);
    NumEditorsPick = responseObj.total;
  } catch (error) {
    NumEditorsPick = 0;
  }
您可以使用Javascript检查解析JSON是否具有您要查找的密钥

在这种情况下,我会是这样的:

var responseObj = Platform.Function.ParseJSON(response["Content"]);
if (responseObj.hasOwnProperty('error')){
    // handle error msg
}else{
    // do something else
}
使用您提供的JSON输入


更新 好的,我最初的回答是基于你在这里说的:

我的脚本在有产品的情况下运行良好,但在没有产品的情况下运行良好 产品处于活动状态,响应为:

{“错误”:“未找到任何产品,请检查请求设置”}

但是您调用的服务不会返回包含错误的JSON字符串,而是返回404,因此,任何解析或使用响应内容的尝试都是无效的

因此,首先,您可以尝试在try/catch方法中包装您的
HTTP.Get(url)
,并在catch子句中将
NumEdPicks
设置为零

另一个选项是检查
HTTP.Get()
方法文档,查看响应对象是否具有状态(例如:
response.status
),或者是否可以为响应和错误传递回调函数,如AJAX中的示例:

$.ajax({
    url: 'yourUrl',
    type: 'GET',
    success: function(data){ 
        // Set NumEdPicks to total and do other stuff 
    },
    error: function(data) {
        // Set NumEdPicks to zero
    }
});
您可以使用Javascript检查解析JSON是否具有您要查找的密钥

在这种情况下,我会是这样的:

var responseObj = Platform.Function.ParseJSON(response["Content"]);
if (responseObj.hasOwnProperty('error')){
    // handle error msg
}else{
    // do something else
}
使用您提供的JSON输入


更新 好的,我最初的回答是基于你在这里说的:

我的脚本在有产品的情况下运行良好,但在没有产品的情况下运行良好 产品处于活动状态,响应为:

{“错误”:“未找到任何产品,请检查请求设置”}

但是您调用的服务不会返回包含错误的JSON字符串,而是返回404,因此,任何解析或使用响应内容的尝试都是无效的

因此,首先,您可以尝试在try/catch方法中包装您的
HTTP.Get(url)
,并在catch子句中将
NumEdPicks
设置为零

另一个选项是检查
HTTP.Get()
方法文档,查看响应对象是否具有状态(例如:
response.status
),或者是否可以为响应和错误传递回调函数,如AJAX中的示例:

$.ajax({
    url: 'yourUrl',
    type: 'GET',
    success: function(data){ 
        // Set NumEdPicks to total and do other stuff 
    },
    error: function(data) {
        // Set NumEdPicks to zero
    }
});

非常感谢您的回答。我尝试了您想法的几种变体,但不幸的是,当0个产品处于活动状态时(当>0时,它运行得非常好),它仍然会崩溃。请在阅读我的答案后用您尝试过的内容更新您的问题。我用一个工作示例更新了我的答案,希望它能有所帮助:-)嘿,Grazina,非常感谢您在这里帮助我,我更新了我的问题,以显示我迄今为止尝试过的内容。只有在出现错误消息的情况下,它仍然崩溃。我设法在其他地方运行了脚本,我我得到了这个:
{“total”:626,“product_id”:[“100734”,“100900”,“101309”,“101300”,“100979”,“101086”,“100964”,“101175”,“101043”,“101047”]}System.Collections.Generic.Dictionary2[系统.字符串,系统.对象]
仅当存在交易时。当它找不到我正在获得的任何交易时:
尝试通过HttpGet调用检索内容时发生异常。URL:[…]远程服务器返回错误:(404)未找到。
它识别错误响应并停止脚本…非常感谢您的回答。我尝试了您的想法的几种变体,但不幸的是,当0个产品处于活动状态时,它仍然崩溃(当>0时,它运行得非常好)。请在阅读我的答案后用您尝试过的内容更新您的问题。我用一个工作示例更新了我的答案,希望它能有所帮助:-)嘿,Grazina,非常感谢您在这里帮助我,我更新了我的问题,以显示我迄今为止尝试过的内容。只有在出现错误消息的情况下,它仍然崩溃。我设法在其他地方运行了脚本,我我得到了这个:
{“total”:626,“product_id”:[“100734”,“100900”,“101309”,“101300”,“100979”,“101086”,“100964”,“101175”,“101043”,“101047”]}System.Collections.Generic.Dictionary2[系统.字符串,系统.对象]
只有当