通过Ajax调用发送布尔值时,PHP将值作为字符串获取

时间:2018-02-20 07:17:53

标签: javascript php ajax

通过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'])

返回字符串。如何返回布尔值。

4 个答案:

答案 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的传入响应数据的格式选项,而不是要发送到服务器的数据类型。

最佳, 添