2016-04-19 10 views
2

フォームを送信した後にajaxエラーを表示します。今すぐ 'die'で終了します これを処理する最善の方法は何ですか?このPHPファイルに「script」タグで何かを書くだけですか?ajaxエラーを返すには?

if($_POST['postForm'] == 'newsletter'){ 

    $newsletterSubscriber = new NewsletterSubscriber(); 
    $newsletterSubscriber->set('CMS_newsletters_id', 2); 
    $newsletterSubscriber->set('created', date('Y-m-d H:i:s')); 
    $newsletterSubscriber->set('firstName', $_POST['voornaam']); 
    $newsletterSubscriber->set('lastName', $_POST['achternaam']); 
    $newsletterSubscriber->set('companyName', $_POST['beddrijfsnaam']); 
    $newsletterSubscriber->set('emailAddress', $_POST['email']); 
    $newsletterSubscriber->set('subscribed', 1); 
    $saved = $newsletterSubscriber->save(); 

    die('subscriber added'); 
} 

私が見つけたいくつかのソリューションを試しましたが、動作させることができませんでした。

ありがとうございます!

+1

'JSON'応答は解決策の一つとなり、それを試してみてくださいを! – Jer

答えて

2

あなたがやらなければならないことは、簡単にはJavaScript

if($_POST['postForm'] == 'newsletter'){ 

    $newsletterSubscriber = new NewsletterSubscriber(); 
    $newsletterSubscriber->set('CMS_newsletters_id', 2); 
    $newsletterSubscriber->set('created', date('Y-m-d H:i:s')); 
    $newsletterSubscriber->set('firstName', $_POST['voornaam']); 
    $newsletterSubscriber->set('lastName', $_POST['achternaam']); 
    $newsletterSubscriber->set('companyName', $_POST['beddrijfsnaam']); 
    $newsletterSubscriber->set('emailAddress', $_POST['email']); 
    $newsletterSubscriber->set('subscribed', 1); 
    $saved = $newsletterSubscriber->save(); 

    $response = array('error_code'=>0, 
         'message'=>'subscriber added' 
        ); 
    echo json_encode($response); 
    exit; 
} 

で処理できるJSON文字列にそれを回すためにjson_encode()を使用し、その後、配列を作成し、あなたが戻ってその配列に渡したい任意のパラメータを置いていますJavascriptをあなたがdataType:JSONを使用する際にブラウザが自動的にdata.error_codeとに取り組むことができるようにJSON文字列をJavaScriptのオブジェクトに返さ変換

$.ajax({ 
    type: "POST", 
    url: "connection.php", 
    data: {param1: 'aaa'}, 
    dataType: JSON 
}) 
.done(function(data){ 
    if(data.error_code == 0) { 
     alert(data.message); 
    } 
}); 

ノートのようなものにwoudl簡単なJavaScriptのオブジェクト表記

+0

あなたの答えをありがとう!だから、もし私が 'connection.php'に自分のPHPスクリプトを持っているなら、私のajaxのURLはconnection.phpですか?現時点ではまだ私はブランコのページにつながっています。 –

+0

はいそれは正しいです – RiggsFolly

+0

さようなら!申し訳ありませんが最後の1つの質問:私はブランコのページに私を指示フォームを提出した後にそれを防ぐことができますか? –

1

あなたは次のように行うことができます。

if($saved) { 
die('subscriber added'); 
} else { 
echo "error"; 
} 

とAjaxで次のことが確認できます。

$.ajax({ 
    type: "POST", 
    url: "savedata.php", 
    data: form, 
    cache: false, 
    success: function(data){ 
     if(data == "error") { 
      alert("Data has not been saved successfully. Please try again."); 
      window.location.reload(true); 
     } 
    } 
}); 
1

あなたはjQuery Ajax APIをチェックしましたか?これはその例から直接得られます。 それはあなたがカスタムjsonあなたを作るために

var jqxhr = $.ajax("example.php") 
    .done(function() { 
    alert("success"); 
}) 
.fail(function() { 
    alert("error"); 
}) 
.always(function() { 
    alert("complete"); 
}); 
1

最善の解決策がある.done().fail.always()機能を使用して、それを送ることができると言うのAJAX:

代わりのdie試み:

$message = array('error'=>'subscriber added'); 
echo json_encode($message); 

あなたとajax callback do:

function(success) { 
    if(success.error) { 
     //do stuff 
    } 
//do stff 
} 
1

エラー番号に続いてJSONメッセージを使用します

if($saved) { 
echo json_encode(array('message'=>'Successfully saved','erno'=>0)); 
} else { 
echo json_encode(array('message'=>'Error on save','erno'=>1)); 
} 

JS:

success:function(data) { 
    if(data.erno == 1) { 
    alert(data.message) 
    //do other stuf here 
    } else { 
    alert(data.message)//if save was successful 
    } 
} 
関連する問題