AJAX传递表格数据

时间:2015-12-02 04:30:20

标签: javascript php jquery ajax

我想弄清楚为什么这不起作用。这是我的表单的子集,如下所示:

   <input type="hidden" id="gift_id3" name="giver3gift_id" value="925"></td>
   <tr id="tr3">
       <td>
            <select class="type" id="type3" name="giver3paymenttype_val">
             <option value="1" SELECTED>Check</option>
             <option value="2">Cash</option>
             <option value="3">ACH</option>
             <option value="4">In Kind Donation</option>
          </select>
       </td>
       <td><input type="text" class="refnum" id="refnum3" name="giver3ref_num" value="2147483647"></td>
       <td><input type="text" class="amount" id="amount3" name="giver3amount" value="25.00" onBlur="this.value=formatCurrency(this.value)"></td>
       <td>
            <select class="type" id="type3" name="giver3taracct_val">
             <option value="1" SELECTED>General Fund</option>
             <option value="2">Building Fund</option>
             <option value="3">Missions Fund</option>
          </select>
       </td>
       <td><input type="checkbox" id="void3" name="giver3void">
   </tr>

这是我的AJAX:

var $inputs = $("#dialog-editgiving :input");
var parameters = [];                  

$inputs.each(function() {
   parameters[this.name] = $(this).val();
});

$.ajax({
   url : "./scripts/form_process/update_giving.php",
   type: "POST",
   data : {parameters:parameters},
   success: function(data, textStatus, jqXHR)
         {
           alert(data);
         },
   error: function(jqXHR, textStatus, errorThrown)
         {
           alert(errorThrown);
          }
});

这是我的update_giving.php文件

<?php

foreach ($_POST as $key => $value) {
 echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
}

?>

当我浏览$ inputs数组时,我得到了表单中提交的值。然后它被移交给“./scripts/form_process/update_giving.php”脚本,我在POST对象中什么都没有。

我的AJAX请求中有不正确的内容吗?

4 个答案:

答案 0 :(得分:0)

而不是此代码

var $inputs = $("#dialog-editgiving :input");
var parameters = [];                  

$inputs.each(function() {
   parameters[this.name] = $(this).val();
});

使用

var paramerter = $( '#dialog-editgiving' ).serialize();

用于从表单中获取所有输入..

并在正常的php函数中以yoy fetch的形式获取update_giving.php文件中的数据 例如

$_POST['giver3taracct_val'];

我希望这段代码可以帮到你。

答案 1 :(得分:0)

尝试在表单提交时执行代码,并使用serialize()

序列化所有数据

尝试这样的事情:

$('form').submit(function(e){
e.preventDefault();

var data = $(this).serialize();

$.ajax({
   url : "./scripts/form_process/update_giving.php",
   type: "POST",
   data : data,
   success: function(data, textStatus, jqXHR)
         {
           alert(data);
         },
   error: function(jqXHR, textStatus, errorThrown)
         {
           alert(errorThrown);
          }
});

答案 2 :(得分:0)

使用注册页面

<script>
    function my_user(user_name){
          var dataString = 'user_name='+ user_name +'&tbl_name='+ tbl_name+'&valid_user='+ valid_user;
            $.ajax({
                type: "POST",
                url: "user_ajax.php",
                data: dataString,
                cache: false,
                success: function(data) {
                 if(data == 1){
                       $("#user_exits").html("User Name Already Exist!");
                       $('#btn_submit').addClass("disabled");
                       //$("#user").focus();
                  }
                  else if(data == 0){
                    $("#user_exits").addClass("hide");
                    $('#btn_submit').removeClass("disabled");
                  }
                }
            });
          }
</script>
<input required type="text" class="form-control" placeholder="User Name *" id="user" name="v_user_name" onblur="my_user(this.value)" value="<?php echo $user_name; ?>" autofocus >
//user_ajax.php

    <?php
      $page_no=$_POST['page_no'];
      $tbl_name=$_POST['tbl_name'];


      if($tbl_name=='tbl_user' && $_POST['user_name']!='' && $_POST['valid_user']=='user_exit'){

          $sql_user = "SELECT * FROM tbl_user WHERE v_user_name='".$_POST['user_name']."' ";
          $rsd_user = mysql_query($sql_user);
          $sql_user_exist = "SELECT * FROM tbl_user WHERE id ='".$_SESSION['usr_id']."' ";
          $rsd_exist_user = mysql_query($sql_user_exist);
          $row_user=mysql_fetch_array($rsd_exist_user);
          if($row_user['v_user_name']==$_POST['user_name']){
            echo $msg_user=0;
          }
          else{
            $msg_user = mysql_num_rows($rsd_user); //returns 0 if not already exist
            echo $msg_user;
          }
      }
    ?>

答案 3 :(得分:0)

在Rubby Smith的评论的帮助下。我能够使这个代码工作。谢谢大家。

    var parameters = $("#dialog-editgiving :input").serialize();

    $.ajax({
         url : "./scripts/form_process/update_giving.php",
         type: "POST",
         data : {parameters:parameters},
         success: function(data, textStatus, jqXHR)
             {
                alert(data);
             },
         error: function(jqXHR, textStatus, errorThrown)
             {
                alert(errorThrown);
             }
     });

在PHP脚本中使用以下内容。

$params = array();
$form_fields = array_keys($HTTP_POST_VARS);
for ($i = 0; $i < sizeof($form_fields); $i++) {
    parse_str($HTTP_POST_VARS[$form_fields[$i]], $params);
}