指定された登録番号の人が既にデータベースに登録されているかどうかをサーバー側で確認する必要があります。この人物がすでに登録されている場合、私はプログラムの流れを正常に進めます。しかし、番号がまだ登録されていない場合、オペレータが入力された番号の新しい人物を登録したいかどうかを確認する確認ダイアログを表示し、オペレータが「はい」と答えた場合、その人物はフォーム上に提出された番号。AJAXリクエスト後のJQuery確認ダイアログ
私は
サーバー側(PHP)試した:私も、私は入れたかったところだ、警告を表示することはできません
function submit(){
var data = $('#myForm').serialize();
$.ajax({
type: 'POST'
,dataType: 'json'
,url: 'myPHP.php'
,async: 'true'
,data: data
,error: function(response){
alert('response');
}
});
return false;
}
:
if (!$exists_person) {
$resp['success'] = false;
$resp['msg'] = 'Do you want to register a new person?';
echo json_encode($resp);
}
クライアント側を私の確認のダイアログは、サーバー側で書かれたメッセージです。その他の問題は、オペレータの答えを追加したフォーム全体をどのように再提出するのですか?サーバーはこの新しい人物を登録する答えが「はい」だったかどうかを確認できますか?
EDIT
私は、このような問題を解決することができました:
サーバー側(PHP):
$person = find($_POST['regNo']);
if ($_POST['register_new'] === 'false' && !$person) {
$resp['exists'] = false;
$resp['msg'] = 'Do you want to register a new person?';
die(json_encode($resp)); //send response to AJAX request on the client side
} else if ($_POST['register_new'] === 'true' && !$person) {
//register new person
$person = find($_POST['regNo']);
}
if($person){
//proceed normal program flow
}
クライアント側:
function submit(e) {
e.preventDefault();
var data = $('#myForm').serialize();
var ajax1 = $.ajax({
type: 'POST'
, dataType: 'json'
, async: 'true'
, url: 'myPHP.php'
, data: data
, success: function (response) {
if (!response.exists && confirm(response.msg)) {
document.getElementById('register_new').value = 'true'; //hidden input
dados = $('#myForm').serialize(); //reserialize with new data
var ajax2 = $.ajax({
type: 'POST'
, dataType: 'json'
, async: 'true'
, url: 'myPHP.php'
, data: data
, success: function() {
document.getElementById('register_new').value = 'false';
$('#myForm').unbind('submit').submit();
}
});
} else if (response.success) {
alert(response.msg);
$('#myForm').unbind('submit').submit();
}
}
});
}
あなたは 'confirm()'を探していると思いますか? – Naruto
アラートはエラー時にのみ表示されます。あなたのAjaxリクエストが成功している可能性があります。 – Moob
'error:コールバックの前に' success:function(response){alert(response);} 'を追加します。 '警告 'が表示されるはずです。 'alert'が表示されたら' alert'を 'confirm'に置き換えることができます。 – Venky