【问题标题】:Ajax Post parametersAjax Post 参数
【发布时间】:2012-01-16 12:36:42
【问题描述】:

我有一个将数据发布到 php 脚本的脚本:

xhr.open("POST","processData.php");

我向它发送了一次数据:

xhr.send(email);

如何将多个数据发布到 php 脚本?假设我有要发送以进行处理的变量名字和姓氏?我试过这个:

xhr.send(essay, firstName);

但不确定在 PHP 脚本中如何处理它,我是否使用通常的 $_POST['essay'] 来收集值?编码呢?

感谢您的帮助。

【问题讨论】:

    标签: php javascript ajax post


    【解决方案1】:

    你创建一个对象,然后发送它:

    var obj = {
        essay: essay,
        firstName: firstName
    };
    xhr.send("data=" + JSON.stringify(obj));
    

    在服务器端你会得到:

    json_decode($_POST['data']); //Gives you a standard object with fields essay and firstName
    

    【讨论】:

    • 那么当我使用 json_decode($_POST['data']);在 PHP 中?我如何将名字和电子邮件放入分隔变量?有没有办法像我通常在 PHP 中那样单独发送两条数据?
    • 有,你可以这样做:xhr.send("essay=" + JSON.stringify(essay) + "&firstName=" + JSON.stringify(firstName));。但是做上面的事情,你可以拥有:$result = json_decode($_POST['data']);,然后访问$result->essay$result->firstName
    • 您的意思是为什么更喜欢json_decode 方式?因为 JS 端更具可读性,并且它保留了作为单个实体发送的数据的性质。
    【解决方案2】:

    只需创建查询字符串以传递send()

    xhr.send("essay=" + encodeURIComponent(essay) 
              + "&firstname=" + encodeURIComponent(firstName));
    

    关于 encodeURIComponent,您可以看到 MDN reference:如果您的变量包含不常见的字符,如空格、& 和其他字符,则可能需要使用它

    【讨论】:

      【解决方案3】:

      使用 JSON(Javascript 对象表示法):

      http://www.json.org/

      var data = new Object;
      data.name = 'some name';
      data.id = 123
      xhr.send(JSON.stringify(data))
      

      你可以用 json_decode() 把它变成一个相同的 php 对象。当前浏览器的 JS 引擎内置了 JSON 方法,但旧版 IE (6, 7) 没有,因此您需要包含此脚本来弥补:

      https://github.com/douglascrockford/JSON-js/blob/master/json2.js

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-27
        • 2012-09-21
        • 1970-01-01
        相关资源
        最近更新 更多