我决定停止使用 jQuery,因此我将所有内容都转换为纯 JavaScript。
我有这个 ajax
调用,我想将 url 的最后部分发送到 php 服务器,但是 JSON.stringify()
发送一个空服务器中的对象
。
为什么会发生这种情况?
AJAX 调用:
var ajax = new XMLHttpRequest();
ajax.open('get', 'ajax/autocomplete.php');
ajax.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
ajax.send(JSON.stringify({q: document.location.href.split('/').slice(-1)[0]}));
PHP:
<?php
require_once '../../private/core/init.php';
header('Content-Type: application/json');
print_r($_GET);//empty
$data = new AUTOCOMPLETE($_GET['q']);
echo json_encode($data->data());
?>
我收到此错误:未定义索引:q
最佳答案
您可能想使用 error_reporting(0) 抑制 PHP 错误;或者首先使用 isset/empty 或其他一些可以抑制 PHP 警告的函数验证输入数据。警告输出将使您的 JSON 响应数据对您的 javascript(jQuery 或纯 javascript)无效。
<?php
error_reporting(0);
require_once '../../private/core/init.php';
header('Content-Type: application/json');
if (isset($_GET['q'])) {
$data = new AUTOCOMPLETE($_GET['q']);
echo json_encode($data->data());
}
?>
关于javascript - JSON.stringify 发送空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353683/