代码之家  ›  专栏  ›  技术社区  ›  Matthew Herbst

当我使用jquery.ajax对PHP脚本进行POST时,为什么整数会变成字符串

  •  8
  • Matthew Herbst  · 技术社区  · 10 年前

    我花了最后一个小时试图弄清楚这一点,但没有结果。SO上有很多关于jQuery和ajax()的帖子,但我还没有找到一篇能处理我的具体问题的帖子。

    我的代码基础:

    在客户端:

    var data = {"id": 1};
    j.ajax({
      type: "POST",
      url: "postTestingResult.php",
      data: {'data': data},
      dataType: "json",
      success: ajaxSuccess,
      error: ajaxError
    });
    

    在使用PHP的服务器上:

    $data = $_POST['data'];
    echo $data; //{"id": "1"}
    

    为什么整数值变为字符串?如何防止这种情况发生?我真的不想创建一个自定义函数来循环通过我的数据对象(实际上非常复杂)来转换所有值。

    非常感谢!

    2 回复  |  直到 10 年前
        1
  •  6
  •   Shankar Narayana Damodaran    10 年前

    通过发送参数时 $_GET $_POST ,它们被解释为 .

    也许 需要适当地铸造,以使其适合您的工作方式。

        2
  •  3
  •   mesutozer    10 年前

    在你的情况下,你需要 json_decode 您收到的数据。然后,您将在通过Ajax发送的变量类型中包含变量。

    $data = json_decode($_POST['data'], true);
    // $data['id'] is now int
    

    $_POST['data'] 是一个字符串,如其他答案中所解释的,但当您解码它时,您可以获得内部元素的正确类型。