Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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时出现AJAX获取错误_Javascript_Arrays_Json_Ajax - Fatal编程技术网

Javascript 从网页下载多个JSON时出现AJAX获取错误

Javascript 从网页下载多个JSON时出现AJAX获取错误,javascript,arrays,json,ajax,Javascript,Arrays,Json,Ajax,我有一个AJAX函数,每当它从另一个在JSON响应末尾打印了错误的网页获得JSON响应时,它就会收到一个错误。当没有错误时,函数会正常报告,但我不知道如何让AJAX函数忽略错误,只读取响应的JSON部分 HTML: 但该网站的回应如下: {"background":{"fill":"#202124","text":"White"},"event":{"unix

我有一个AJAX函数,每当它从另一个在JSON响应末尾打印了错误的网页获得JSON响应时,它就会收到一个错误。当没有错误时,函数会正常报告,但我不知道如何让AJAX函数忽略错误,只读取响应的JSON部分

HTML:

但该网站的回应如下:

    {"background":{"fill":"#202124","text":"White"},"event":{"unixTime":1607040000,"date":"4-12-20","day":"Fri","time":"10:30","dayFinish":"Fri","timeFinish":"11:30"}
Fatal error: Uncaught RuntimeException: Unable to find a speaker for this alarm in /var/www/html/vendor/duncan3dc/sonos/src/Alarm.php:128 Stack trace: #0 /var/www/html/vendor/duncan3dc/sonos/src/Alarm.php(74): duncan3dc\Sonos\Alarm->getSpeaker() #1 /var/www/html/vendor/duncan3dc/sonos/src/Alarm.php(660): duncan3dc\Sonos\Alarm->soap('AlarmClock', 'UpdateAlarm', Array) #2 /var/www/html/vendor/duncan3dc/sonos/src/Alarm.php(167): duncan3dc\Sonos\Alarm->save() #3 /var/www/GoogleAlarm/sonoscontroller.php(47): duncan3dc\Sonos\Alarm->setTime(Object(duncan3dc\Sonos\Utils\Time)) #4 /var/www/GoogleAlarm/quickstart_data.php(362): sonosAlarmUpdate('14', '08:54', false, '10') #5 {main} thrown in /var/www/html/vendor/duncan3dc/sonos/src/Alarm.php on line 128
**注意,我删除了JSON返回中的无关数据,因为它与问题无关


“致命错误:”部分通常不会出现,除非出现不同的错误,但是我仍然希望AJAX get JSON响应能够正常工作。我该怎么做?我不想在PHP.ini中关闭它

如果您确实想保留success()result参数中的错误,但忽略它,请在访问result的值之前执行此操作:

let fatalErrorIndex = result.indexOf("Fatal error:");
if(fatalErrorIndex != -1) result = result.substring(0, fatalErrorIndex);
result = JSON.parse(result.trim());
此外,当您以这种方式手动解析JSON时,请将数据类型设置为“text

但是,您应该考虑实现Ajax错误处理。这样,如果PHP端发生任何错误,您将收到AJAX错误回调的通知:

$.ajax({
    url: 'https://example.com/quickstart_data.php',
    type: 'POST',
    dataType: 'json',
    cache: false,
    success: function(result) {
    },
    error: function (xhr, ajaxOptions, thrownError) {
        // Handle errors here
    }
}

这是处理错误的正确方法。有关更多信息,请参阅。如果您确实希望保留成功()的结果参数中的错误,但忽略它,请在访问结果的值之前执行此操作:

let fatalErrorIndex = result.indexOf("Fatal error:");
if(fatalErrorIndex != -1) result = result.substring(0, fatalErrorIndex);
result = JSON.parse(result.trim());
此外,当您以这种方式手动解析JSON时,请将数据类型设置为“text

但是,您应该考虑实现Ajax错误处理。这样,如果PHP端发生任何错误,您将收到AJAX错误回调的通知:

$.ajax({
    url: 'https://example.com/quickstart_data.php',
    type: 'POST',
    dataType: 'json',
    cache: false,
    success: function(result) {
    },
    error: function (xhr, ajaxOptions, thrownError) {
        // Handle errors here
    }
}

这是处理错误的正确方法。有关更多信息,请参阅。要使用第一个,您还需要删除
数据类型:“json”
,正如我在回答中提到的,要使用第一个,数据类型必须设置为“text”啊,是的,很抱歉我错过了。要使用第一个,您还需要删除
数据类型:“json”
,正如我在回答中提到的,要使用第一个,数据类型必须设置为“text”啊,是的,很抱歉我错过了。您可以在
alarm.php
中使用来防止致命错误被输出到响应,或者您也可以使用相同的函数在JSON中引入一个
错误
键,该键的值解释了错误。您可以在
alarm.php
中使用来防止致命错误被输出到响应响应,或者您也可以使用相同的函数在JSON中引入一个
error
键,该键的值解释了错误。