Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/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 如果没有结果,请单击TJS_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript 如果没有结果,请单击TJS

Javascript 如果没有结果,请单击TJS,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我正在使用来执行json搜索 result = JSON.search(data, '//*[name="Gheorghe"]'); 如果在json中找不到该值,我会得到一个错误无法读取未定义的属性“Gheorghe” 如果没有匹配的搜索字符串,是否有方法返回其他内容?为什么不能使用 if(typeof(JSON.search(data, '//*[name="Gheorghe"]')) !== 'undefined') { result = JSON.search(data, '//*[

我正在使用来执行json搜索

result = JSON.search(data, '//*[name="Gheorghe"]');
如果在json中找不到该值,我会得到一个错误
无法读取未定义的属性“Gheorghe”

如果没有匹配的搜索字符串,是否有方法返回其他内容?

为什么不能使用

if(typeof(JSON.search(data, '//*[name="Gheorghe"]')) !== 'undefined') {
  result = JSON.search(data, '//*[name="Gheorghe"]');
}
else {
  //something else
}
为什么你不能用

if(typeof(JSON.search(data, '//*[name="Gheorghe"]')) !== 'undefined') {
  result = JSON.search(data, '//*[name="Gheorghe"]');
}
else {
  //something else
}
您可以使用语句

try…catch语句标记要尝试的语句块,并指定在引发异常时的响应

示例

在以下示例中,try块中的代码可能引发三个异常:TypeErrorRangeErrorEvalError(错误类型:
EvalError
InternalError
RangeError
ReferenceError
SyntaxError
URIError
)。发生异常时,控制权转移到相应的catch子句。如果该异常不是指定的异常之一,并且找到了无条件catch子句,则控制权转移到该catch子句

var结果;
试一试{
警报(result.id);
}捕获(e){
if(e instanceof TypeError){
//处理TypeError异常的语句
e='这是我的自定义类型错误消息,而不是“无法读取属性…”;
}else if(e instanceof RangeError){
//用于处理RangeError异常的语句
e='这是我的自定义范围错误消息,而不是“无法读取属性…”;
}else if(例如EvalError实例){
//处理EvalError异常的语句
e='这是我的自定义评估错误消息,而不是“无法读取属性…”;
}否则{
//语句来处理任何未指定的异常
e='这是我的自定义未指定错误消息,而不是“无法读取属性…”;
}
log(“Error!”,e);//打印到控制台的自定义错误消息
}
警报(result.id);//打印到控制台默认错误消息result未定义
您可以使用语句

try…catch语句标记要尝试的语句块,并指定在引发异常时的响应

示例

在以下示例中,try块中的代码可能引发三个异常:TypeErrorRangeErrorEvalError(错误类型:
EvalError
InternalError
RangeError
ReferenceError
SyntaxError
URIError
)。发生异常时,控制权转移到相应的catch子句。如果该异常不是指定的异常之一,并且找到了无条件catch子句,则控制权转移到该catch子句

var结果;
试一试{
警报(result.id);
}捕获(e){
if(e instanceof TypeError){
//处理TypeError异常的语句
e='这是我的自定义类型错误消息,而不是“无法读取属性…”;
}else if(e instanceof RangeError){
//用于处理RangeError异常的语句
e='这是我的自定义范围错误消息,而不是“无法读取属性…”;
}else if(例如EvalError实例){
//处理EvalError异常的语句
e='这是我的自定义评估错误消息,而不是“无法读取属性…”;
}否则{
//语句来处理任何未指定的异常
e='这是我的自定义未指定错误消息,而不是“无法读取属性…”;
}
log(“Error!”,e);//打印到控制台的自定义错误消息
}

alert(result.id);//打印到控制台默认错误消息result未定义
definant.js,第三方库应该负责解决此问题。我相信您的话,他们没有

在这种情况下,有两种方法可以解决这个问题

  • 当找不到任何结果时,修改库以返回undefined-不建议使用这种方法,因为它会给其他使用代码库的开发人员带来问题,也会给使用bower/npm维护库的版本控制带来问题

  • 要在实现中使用try-catch-这是解决此问题的理想方法,因为您不必对第三方库进行更改,并且您可以获得一个简单的触发器来检查try块的错误是否等于
    “无法读取未定义的属性“Gheorghe”
    ,您可以运行首选回调

  • 这是我推荐的解决方案

    var name = "Gheorge";
    try {
       result = JSON.search(data, '//*[name="' + name + '"]');
    } 
    catch (error === "Cannot read property '" + name + "' of undefined") {
       // As there could be any type of error from the function JSON.search
       console.log(error);
       yourErrorHandler(error);
    }
    

    Devigat.js,第三方图书馆应该负责这个问题。我相信你的话,他们不会

    在这种情况下,有两种方法可以解决这个问题

  • 当找不到任何结果时,修改库以返回undefined-不建议使用这种方法,因为它会给其他使用代码库的开发人员带来问题,也会给使用bower/npm维护库的版本控制带来问题

  • 要在实现中使用try-catch-这是解决此问题的理想方法,因为您不必对第三方库进行更改,并且您可以获得一个简单的触发器来检查try块的错误是否等于
    “无法读取未定义的属性“Gheorghe”
    ,您可以运行首选回调

  • 这是我推荐的解决方案

    var name = "Gheorge";
    try {
       result = JSON.search(data, '//*[name="' + name + '"]');
    } 
    catch (error === "Cannot read property '" + name + "' of undefined") {
       // As there could be any type of error from the function JSON.search
       console.log(error);
       yourErrorHandler(error);
    }