データをjson配列として別のphpファイルに投稿するajaxを使用してフォームを作成しました。フォームを php ハンドラーに投稿するためのマークアップ ajax は次のとおりです。
$.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//
}
});
これは、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」タイプを使用すると機能します。「投稿」タイプで機能しない理由を教えてくれる人はいますか? ajax.php 部分が必要な場合はお知らせください...