Php ajax表单未提交帖子

Php ajax表单未提交帖子,php,ajax,forms,post,json,Php,Ajax,Forms,Post,Json,我使用ajax创建了一个表单,将数据作为json数组发布到一个单独的php文件中。用于将表单发布到php处理程序的标记为: $.ajax({ dataType: "json", type: "post", url: "ajax.php?action=add_driver", data: $("form#addDriver").serialize(), // serializes the form's elements. beforeSend: function()

我使用ajax创建了一个表单,将数据作为json数组发布到一个单独的php文件中。用于将表单发布到php处理程序的标记为:

$.ajax({
   dataType: "json",
   type: "post",
   url: "ajax.php?action=add_driver",
   data: $("form#addDriver").serialize(), // serializes the form's elements.
   beforeSend: function()
   {

$('.error, .success, .notice').remove();

},
success: function(json)
{

if (json['status']=='success'){
    alert(json['message']);
    }else{

if(json['error']['driver_firstname']){
    $("input[name=driver_firstname]").after('<div class="error">'+json['error'['driver_firstname']+'</div>');   
}

if(json['error']['driver_surname']){
    $("input[name=driver_surname]").after('<div class="error">'+json['error']['driver_surname']+'</div>');  
}
if(json['error']['driver_dob']){
    $("input[name=driver_dob]").after('<div class="error">'+json['error']['driver_dob']+'</div>');  
}

if(json['error']['driver_address']){
    $("input[name=driver_address]").after('<div class="error">'+json['error']['driver_address']+'</div>');  
}

if(json['error']['driver_postcode']){
    $("input[name=driver_postcode]").after('<div class="error">'+json['error']['driver_postcode']+'</div>');    
}

if(json['error']['driver_city']){
    $("input[name=driver_city]").after('<div class="error">'+json['error']['driver_city']+'</div>');    
}

if(json['error']['driver_county']){
    $("input[name=driver_county]").after('<div class="error">'+json['error']['driver_county']+'</div>');    
}

if(json['error']['driver_email']){
    $("input[name=driver_email]").after('<div class="error">'+json['error']['driver_email']+'</div>');  
}

if(json['error']['driver_tel']){
    $("input[name=driver_tel]").after('<div class="error">'+json['error']['driver_tel']+'</div>');  
}

if(json['error']['driver_mobile']){
    $("input[name=driver_mobile]").after('<div class="error">'+json['error']['driver_mobile']+'</div>');    
}   

//These are the series of validation checks carried out before submission//


}
                     });
$.ajax({
数据类型:“json”,
类型:“post”,
url:“ajax.php?action=add_驱动程序”,
数据:$(“表单#addDriver”).serialize(),//序列化表单的元素。
beforeSend:function()
{
$('.error、.success、.notice').remove();
},
成功:函数(json)
{
如果(json['status']=='success'){
警报(json['message']);
}否则{
如果(json['error']['driver_firstname']){
$(“输入[name=driver\u firstname]”)。在(“”+json['error'['driver\u firstname']+“”)之后;
}
如果(json['error']['driver_name']){
$((“”+json['error']['driver\u name']+'')之后的输入(“”+json['error']['driver\u name']+');
}
如果(json['error']['driver\u dob']){
$(“输入[name=driver\u dob]”)。在(“”+json['error']['driver\u dob']]+“”)之后;
}
如果(json['error']['driver_address']){
$(“输入[name=driver\u address]”)。在(“”+json['error']['driver\u address']+“”)之后;
}
如果(json['error']['driver\u postcode']){
$(“输入[name=driver\u postcode]”)。在(“”+json['error']['driver\u postcode']+“”)之后;
}
如果(json['error']['driver_city']){
$(“输入[name=driver\u city]”)。在(“”+json['error']['driver\u city']+“”)之后;
}
如果(json['error']['driver_county']){
$(“输入[name=driver\u county]”)。在(“”+json['error']['driver\u county']+“”)之后;
}
如果(json['error']['driver_email']){
$(“输入[name=driver\u email]”)。在(“”+json['error']['driver\u email']+“”)之后;
}
如果(json['error']['driver_tel']){
$(“input[name=driver\u tel]”)。在(“”+json['error']['driver\u tel']+“”)之后;
}
如果(json['error']['driver\u mobile']){
$(“输入[name=driver\u mobile]”)。在(“”+json['error']['driver\u mobile']+“”)之后;
}   
//这些是提交前进行的一系列验证检查//
}
});
这将传递到url中名为ajax.php的文件,该文件使用php验证检查错误,如果一切正常,则应插入数据库中。此部分的编码标记为:

<?php
$json = array();


if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

//for the first field only//            
$driver_firstname = tep_db_prepare_input($HTTP_POST_VARS['driver_firstname']);

if (strlen($driver_firstname)<4){
  $json['error']['driver_firstname'] = 'First Name is required!';
}

if (isset($json['error']) and !empty($json['error'])){

    $json['status'] = 'error';
    $json['message'] = 'Please check your error(s)!';

}else{


     $sql_data_array = array('driver_firstname' => $driver_firstname);

     tep_db_perform(TABLE_DRIVERS, $sql_data_array);

     $driver_id = tep_db_insert_id();

     $json['status'] = 'success';
     $json['message'] = 'Data has been successfully updated!';
    }

}

     echo json_encode($json);

?>

出于某种原因,它没有从浏览器向php文件发布任何值,并且显示一个空白数组。当我使用“get”类型时,它可以工作。有人能告诉我为什么它不适用于“post”类型吗?如果需要ajax.php部分,请让我知道…

(你应该在11年前就停止使用它了)而在我的PHP副本上快速测试它却失败了。使用
$\u POST

使用.serializeArray()而不是.serialize来做你想做的事

样本结果:

[{name:“a”,value:“1”},{name:“b”,value:“2”},{name:“c”,value:“3”},{name:“d”,value:“4”},{name:“e”,value:“5”}]

样本结果:

a=1&b=2&c=3&d=4&e=5

代码应该更接近于此。使用.done并在函数中捕获返回数据

JS:

PHP:



我有一种感觉,.serialize实际上将数据附加到URL,而不是JSON对象。您似乎在问为什么您没有向我们展示的某些PHP代码不起作用。这不是我们真正能告诉您的。@Quentin…您想让我发布PHP处理程序的编码吗?您的表单元素在HTML中是否都有name属性标记?如果没有,这将导致一个空数组/json对象,ID不计算。jQuery文档中指出这是必需的。需要查看更多代码才能确定。HTML和PHP会有所帮助。我已经为PHP处理程序添加了代码,只显示了第一个字段。。。
$.ajax({
    type: "POST", 
    url: "ajax.php?action=add_driver", 
    dataType: "json",
    date:  $("form#addDriver").serializeArray(),
    beforeSend: function() {
        $('.error, .success, .notice').remove();
    }
}).done(function(json) {
    if (json['status']=='success'){
        alert(json['message']);
    }else{
        if(json['error']['driver_surname']){
           /* Do Stuff */ 
        }
    }
});
<?php
$myData = array();
$json = array();

if(isset($_POST['yourData'])){
    $myData = $_POST['yourData'];
}

/* Do stuff */
$json['myValue'] = $myData['passedValue']; 


echo json_encode($json);
?>