通过Ajax(来自客户端)发送的布尔值成为服务器端的字符串:
var ban_status = null;
ban_status = true;
$.ajax({
type: 'POST',
url: app.baseUrl + "/admin/users/api-ban-user",
data: { "userId": user_id, "banStatus": ban_status },
datatype: "json",
success: function (response) {
if (response.status === true) {
addAlert(response.msg, 'success');
userList();
} else {
addAlert(response.msg, 'error');
}
}
});
在php中
$banStatus = $post['banStatus'];
gettype($post['banStatus'])
返回字符串。如何返回布尔值。
答案 0 :(得分:1)
如上所述;您可以在php中使用json_decode但由于帖子数据是一个字符串,您可以发送一个名为json的参数并在JavaScript中对您的对象进行字符串化:
var ban_status = null;
ban_status = true;
$.ajax({
type: 'POST',
url: app.baseUrl + "/admin/users/api-ban-user",
data: {json:JSON.stringify({ "userId": user_id, "banStatus": ban_status })},
datatype: "json"
}).then(
function (response) {
if (response.status === true) {
addAlert(response.msg, 'success');
userList();
} else {
addAlert(response.msg, 'error');
}
}
).fail(//use .catch if you have a new enough jQuery
function(err){
console.warn("something went wrong:",err);
}
);
在PHP中:
$postedObject = json_decode($post['json']);
$banStatus = $postedObject->banStatus;
答案 1 :(得分:0)
使用php typecating
$banStatus = (boolean)$post['banStatus'];
gettype($post['banStatus'])
答案 2 :(得分:0)
在ajax调用中使用1而不是true,而使用0而不是false。 或者与服务器端的字符串进行比较。 HTTP是文本协议,所有内容都必须进行字符串化。 (int,boolean等。)
答案 3 :(得分:0)
关键是你要发送一个JSON,但是给对象"数据"不做你想做的事。它以表单元素的形式发送数据(参见网络检查员)
所以你必须使用:
data: JSON.stringify({ "userId": user_id, "banStatus": ban_status })
发送真正的json-string并通过
解码此服务器端json_decode(file_get_contents("php://input"))
另外:数据类型:" json"只是javascript的传入响应数据的格式选项,而不是要发送到服务器的数据类型。
最佳, 添