1

初めて jQuery を使用しようとしていますが、.ajax を使用した POST 関数が残念です。POST は成功しました。私の PHP ページは MySQL クエリを正しく実行し、新しく作成されたユーザー ID が返されます。唯一の問題は、'success' 関数を実行する代わりに、呼び出した PHP ページをロードするだけで、ユーザー ID がエコーされます。

jQuery関数は次のとおりです。

function register() {
$.ajax({
    type: "POST",
    url: 'sendRegistration.php',
    data: dataString,
    datatype: 'html',
    success: function(response){alert(response);},
    complete: function(response,textStatus){console.log(textStatus);},
    error: function(response){alert(response);}
});
}

...そしてPHPが返すもの:

    // Create a new send & recieve object to store and retrieve the data
    $sender = new sendRecieve();
    $custId = $sender->submitUser($userVars);
    if ($custId != 0) {
        echo $custId;
    } else {
        echo "Database connection problems...";
    }

データベース オブジェクトが作成され、'url' パラメーターからの php ページが読み込まれ、$sender->submitUser() 関数が返す ID が表示されます。

理想的には、「sendRegistration.php」ページを表示せずに、別の js 関数を実行したいと考えています。

簡単な解決策があると確信していますが、何時間も検索しても見つかりませんでした。

ご協力いただきありがとうございます。

4

2 に答える 2

3

フォームからこれを処理している可能性があります。ブラウザのデフォルトのフォーム送信プロセスを防止しない場合、ページはactionフォームの URL にリダイレクトされます。フォームにない場合action、現在のページがリロードされます。これは、おそらくあなたのケースで起こっていることです。

これを防ぐには、次のいずれかの方法を使用します

$('form').submit(function(event){
    /* this method before AJAX code*/
    event.preventDefault()    

        /* OR*/

      /* this method after all other code in handler*/
      return false;
})

フォーム送信ボタンのクリック ハンドラーから AJAX を送信する場合も、同じ方法が適用されます。

于 2012-11-24T20:34:55.617 に答える
0

register() 関数をどのように呼び出していますか? フォームが伝統的に送信されている可能性があり、デフォルトのアクション (標準フォーム送信) を防止する必要がある場合があります。

于 2012-11-24T20:32:57.863 に答える