【问题标题】:Passing a JavaScript Array To PHP Through JQuery $.post通过 JQuery $.post 将 JavaScript 数组传递给 PHP
【发布时间】:2014-04-30 03:33:49
【问题描述】:

这段代码获取所有表单变量并通过 AJAX 将它们发送到 PHP 脚本。但我希望通过 JSON 编码数组返回到 javascript 的 PHP 脚本的计算结果采用 "post":{"uname":"someNamefromForm","email":"someEmail"," 的形式fname":"namefromtheform","lname":"lastnamefromform" }... 我现在得到的输出是 "uname=e&email=e&fname=e&lname=euname".. 这是我想在页面底部显示的 JSON 数组以进行调试。谁能告诉我如何格式化它

这是我的 HTML 表单

  <div id="wrapper">
      <h2> Validation with AJAX,JQuery,JSON and PHP</h2>
          <div class="form-container">    
              <span id="ajax-message"></span>

              <form id="ajax-form" onsubmit="return false;">
                  <p class="legend">All fields marked with an asterisk are required.</p>

                  <fieldset>
                      <legend>User Details</legend>
                      <div>
                        <label for="uname">Username <em>*</em></label> 
                        <input id="uname" type="text" name="uname" value=""  />
                      </div>
                      <div>
                        <label for="email">Email Address <em>*</em></label> 
                        <input id="email" type="text" name="email" value="" />
                      </div>
                      <div>
                        <label for="fname" class="error">First Name <em>*</em></label> 
                        <input id="fname" type="text" name="fname" value="" size="50" class="error"/>
                        <p class='note'>All error message go here </p> 
                      </div>
                      <div>
                        <label for="lname">Last Name <em>*</em></label> 
                        <input id="lname" type="text" name="lname" value="" size="50" />
                      </div>
                  </fieldset>

                  <div class="buttonrow">
                      <input type="submit" value="Submit This Form via AJAX" class="button" />  
                      <input type="button" value="Start Again" class="button" />
                      <a >Refresh this Page</a>
                  </div>
              </form>
          </div> 
      <h3>JSON Array</h3>
      <pre id='debug'></pre>
  </div>

这是我的javascript

$("#ajax-form").submit(function(){
          var variableToSend = $(this).serialize();
          $.post(
            'ajaxformval_post.php', 
            {variable: variableToSend}, 
            function(data){$("#debug").html(data)},
            "json"
          );
      })

这是php

<?php
    $variable = $_POST['variable'];

    echo json_encode($variable);

    /*$json = array(
        'booleanFlag' => TRUE,
        'someText' => "AJAX should be renamed AJAJ",
        'anArrayOfData' => array('name' => 'Mickey', 'ears' => 'very Big') 
    );*/

 ?>

【问题讨论】:

    标签: javascript php jquery ajax json


    【解决方案1】:

    你可以像这样直接发送你的序列化变量:

    $("#ajax-form").submit(function(){
          var variableToSend = $(this).serialize();
          $.post(
            'ajaxformval_post.php', 
             variableToSend, 
            function(data){$("#debug").html(data)},
            "json"
          );
      });
    

    然后在服务器端简单地输出json_encoded post:

    <?php
        $variable = $_POST;
    
        echo json_encode($variable);
     ?>
    

    【讨论】:

      【解决方案2】:

      您是否尝试更改 $.post-method 中的“json”参数?

      根据文档https://api.jquery.com/jQuery.post/

      dataType
      Type: String
      The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html).
      

      所以我猜如果你给他“json”他会自动解码返回的数据。

      【讨论】:

        猜你喜欢
        • 2018-07-25
        • 2012-06-23
        • 1970-01-01
        • 2012-03-08
        • 2020-01-25
        • 1970-01-01
        • 2015-09-11
        • 2012-08-27
        • 2011-10-24
        相关资源
        最近更新 更多