gpt4 book ai didi

javascript - 多个 JSON 数组作为响应 - AJAX 和 PHP

转载 作者:行者123 更新时间:2023-12-03 11:48:32 25 4
gpt4 key购买 nike

我有一个 PHP 脚本设置,它根据用户已完成的操作(或未完成的操作,视情况而定)来回显 JSON 响应:

响应如下所示:

{"type":"error","response":"Script error, please reload the page and try again.
Code: [NAct]","title":"Exception","hide":false}

每个响应都是这样生成的:

echo $form -> ajax_response('error', 'Script error, please reload the page and try again.<br>Code: [NAct]', 'Exception', false);

这被 pNotify 拾取并显示 - 可爱。 (参见下面的ajax请求的.done函数)

request.done(function(msg) {
//validate json response
if (!tryParseJSON(msg)) {
document.write(msg);
} else {
var array = json_to_array(msg);
}
if (array['type'] !== 'none') {
if (array['title'] !== null) {
pushNotification(array['title'], array['response'], array['type'], array['hide']);
} else {
pushNotification(ucfirst(array['type']), array['response'], array['type'], array['hide']);
}
}
ready_status();
});

如果无法通过tryParseJSON()验证响应;响应直接写入页面进行调试。

问题是当我回显多个响应时,如下所示:

{"type":"error","response":"Script error, please reload the page and try again.
Code: [NAct]","title":"Exception","hide":false}

{"type":"error","response":"Script error, please reload the page and try again.
Code: [NDat]","title":"Exception","hide":false}

tryParseJSON() 将其视为胡言乱语并将其打印到页面。

问题

如何将上述两行作为单独的响应并通过我的函数解析它们,然后依次解析到 pNotify 而不将它们合并到单个 JSON 数组中?

解决方案

正如所指出的,这过于复杂。相反,我将每个响应(PHP 端)合并到一个数组中:

$res['json'][] = $form -> ajax_response('error', 'Script error, please reload the page and try again.<br>Code: [NAct]', 'Exception', false);

然后在脚本末尾回显它:

echo json_encode($res['json');

在客户端,我使用了 for 循环,在每次迭代中将它们发送到 pNotify:

request.done(function(msg) {
//validate json response
if (!tryParseJSON(msg)) {
document.write(msg);
} else {
var obj = json_to_array(msg);
}
for (var i=0;i<obj.length;i++) {
if (obj[i]['type'] !== 'none') {
if (obj[i]['title'] !== null) {
pushNotification(obj[i]['title'], obj[i]['response'], obj[i]['type'], obj[i]['hide']);
} else {
pushNotification(ucfirst(obj[i]['type']), obj[i]['response'], obj[i]['type'], obj[i]['hide']);
}
}
}
ready_status();
});

最佳答案

不要创建如此单独的 JSON 输出,而是将其合并到一个输出字符串。

为此,只需将当前分别输出的两个数组包装在一个数组中,如下所示

$myOutput[0] = responseArray1;
$myOutput[1] = responseArray2;
echo json_encode($myOutput);

这样您将获得有效的 JSON 响应。其他一切都只是一些肮脏的解决方法,会让每个必须审查你的工作的人感到不寒而栗。

关于javascript - 多个 JSON 数组作为响应 - AJAX 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com