我试图将一个数组作为 POST 数据传递给 php,但是 .post() 似乎不喜欢我的数据字符串变量。
JavaScript:
var appData = {};
appData['name'] = 'Bob';
var post = JSON.stringify(appData);
$.post('/php/app.php', post, function (result) {
console.log(post);
console.log(result);
});
应用程序.php:
if($_POST['name']) {
echo $_POST['name'];
}
else {
echo 'fail';
}
控制台返回:
{"name":"Bob"}
fail
或者,如果我拼写出 stringify 返回的字符串,一切都会按预期进行:
修改后的javascript:
$.post('/php/app.php', {"name":"Bob"}, function (result) {
console.log(post);
console.log(result);
});
控制台返回:
{"name":"Bob"}
Bob
这是怎么回事?
最佳答案
Alternatively, if I spell out the string returned by stringify
这不是您使用的字符串,而是 $.post
接受的对象。
jQuery使用的默认编码是'application/x-www-form-urlencoded; charset=UTF-8'
,这意味着实际发送到服务器的字符串是name=Bob
,而不是{"name":"Bob"}
。
关于javascript - 如何正确评估字符串变量作为 jQuery.post() 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143292/