【问题标题】:How to send a boolean value by GM_xmlhttpRequest?如何通过 GM_xmlhttpRequest 发送布尔值?
【发布时间】:2017-05-08 11:27:22
【问题描述】:

我对 Greasemonkey 中的表单有疑问。 我想发送一个布尔值usign GM_xmlhttpRequest,但如果我发送:

GM_xmlhttpRequest({
  method: "POST",
  url: "http://localhost/test.php",
  data: "confirm=true",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },
  onload: function(response) {
    console.log(response.responseText);
  }
});

测试php:

var_dump( $_POST );

在我看到的控制台上:

array(1) { ["confirm"]=> string(4) "true" }

我该如何解决这个问题?

【问题讨论】:

  • 您的服务器端需要解释该值并将其转换为您想要的数据类型。传递给服务器的所有数据都以字符串形式出现。

标签: javascript php greasemonkey


【解决方案1】:

只需在服务器端将该值转换为布尔值 - 您已经拥有该值。

你可以直接$myVar = $_POST["confirm"] === "true";

或使用filter_varFILTER_VALIDATE_BOOLEAN 标志,以涵盖更多选项:

$myVar = filter_var($_POST["confirm"], FILTER_VALIDATE_BOOLEAN); - 这允许您覆盖trueTRUEonyes 等 - 都解释为布尔值true

【讨论】:

  • 感谢您的回答。我想对此进行测试,因为在我工作的网页上,我检查了网络书签并看到:
  • searchIds:["237thff66"] search:true
  • 它们在 chrome 中的类型:array 和 boolean
  • 我想知道,这怎么可能?
  • 如何通过 post 方法发送数组。数组,不是字符串
【解决方案2】:

由于您是以 JSON 格式发送数据,因此您需要做的就是解码类似于以下内容的 post 值:

$var = json_decode($_POST['some_param']);

这样你会得到正确的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2012-12-05
    • 2012-06-08
    • 2020-12-31
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多