使用HTML表单和Ajax更新Mysql数据库时出错

时间:2014-02-04 14:34:47

标签: html ajax

我有一个表单,它使用下拉框和隐藏的表单字段将信息传递到php页面,这一切都有效,除非我尝试使用AJAX传递信息。如果我直接发送到工作正常的php页面,所以我知道错误必须在我的AJAx代码中,下面是我的HTML表单和我的AJAX代码。

  <form action="" method="POST" id="update" class="update" name="update">
             <select name="status">
              <option value="Open">Open</option>
              <option value="Closed">Closed</option>
              <option value="On Hold">On Hold</option>
             </select>
         <input type="hidden" name="joborder_id" value="<?php echo "$joborder_id"; ?>">
          <input type="submit" name="submit" class="update" value="update"/>
   </form>




 $(document).ready(function(){
$('form.update').submit(function () {
var status = $(this).find('.status').attr('value');
var joborder_id = $(this).find('.joborder_id').attr('value');
// ...
    $.ajax({
        type: "POST",
        url: "update_status.php",
        data: "status="+ status +"& joborder_id="+ joborder_id,
        success: function(){
            $('form.update').hide(function()  {$('div.success').fadeOut();});

        }
    });
return false;
});
  });

PHP部分,这是非常基础的,看它是否有效

  include ("../connect/db.php");

// CLIENT INFORMATION
$status =   $_POST['status'];
$joborder_id        = $_POST['joborder_id'];

$result = mysql_query("UPDATE joborders SET status='$status' WHERE   joborder_id='$joborder_id'") 
or die(mysql_error());

2 个答案:

答案 0 :(得分:0)

尝试使用表单的serializeArray发送信息并通知dataType json。

...
data: $("#form_id").serializeArray(),
dataType: 'json',
...

答案 1 :(得分:0)

将数据作为JSON对象发送,如下所示:

$(document).ready(function(){
    $('form.update').submit(function () {
        $.ajax({
            type: "POST",
            url: "update_status.php",
            data: {
                status: $(this).find('.status').val(),
                oborder_id: $(this).find('.joborder_id').val()
            },
            success: function(data){
                console.log(data);
                $('form.update').hide(function()  {$('div.success').fadeOut();});

            }
        });
    return false;
   });
  });

如果您要发送表单中的所有字段,可以将data: { ... },替换为:

data: $(this).serializeArray(),