2016-04-29 4 views
0

私はPOSTのデータをバックエンドに送信したいと考えています。 フォームの送信時にリダイレクトされるのを防ぐことに成功しました。私は、POSTリクエストがMYBASEURL/formに行きたいと思っています。jquery ajax POST関数が、指定したURLではなく、自分のベースURLにフォームデータを送信するのはなぜですか?

以下のコードはほとんど動作しますが、Ajax呼び出しは指定されたURLを無視してMYBASEURLにPOSTリクエストを行います。

私は何を使用しています:

jqueryの-1.12.3.min.js

のNode.js v4.3.2

Expressの4.xの

ボディタイプ

<form name="myform" action="#" method="POST"> 
    Username: <input type="text" id="user" name="username"/><br/> 
    Password: <input type="text" id="email" name="email"/> 
    <input type="submit" id="submitForm" value="submit"/> 
</form> 

<script type="text/javascript"> 
    var user=$('#user').val(), email=$('#email').val(); 
    $('#submitForm').bind('click', function() { 
    $.ajax({ 
     url: "/form", 
     type: 'POST', 
     contentType: 'text/json', 
     data: JSON.stringify({name:user, email:email}), 
     complete: function() { /* Do something with the response. */ } 
    }); 
    return false; // Prevent form submit. 
    }); 
</script> 

相対URLを絶対URLに変更すると、何も変更されません。 アクションから '#'を削除すると、何も変わりません。

MYBASEURL/ではなく、このPOSTがMYBASEURL/form/になるようにするにはどうすればよいですか?

+0

javascript用のajax_base_urlグローバルを宣言し、URL:ajax_base_url + '/ form'のように使用することがあります。 – Poria

+0

相対URLを絶対URLに変更しても問題は解決されず、変更されません。 –

答えて

0

はちょうど私自身の答えを追加:

<script type="text/javascript"> 
    $('#submitForm').bind('click', function() { 
    var user=$('#user').val(), email=$('#email').val(); 
    $.ajax({ 
     url: "/api/users", 
     type: 'POST', 
     contentType: 'application/json', 
     data: JSON.stringify({name: user, email: email}), 
     complete: function() { 
     // Do something with the response. 
     } 
    }); 

    return false; // Prevent form submit. 
    }); 
</script> 
:まず変数は、右スコープで初期化されていなかった

、私のスクリプトは次のようになっている必要があります

これは私の$.ajax POSTが正しく正しいパスに送信することが許可:MYBASEURL/form

私の第二の問題は、私が正しく指定されたタイプに一致するコンテンツタイプを解析するために私のバックエンドを設定しなければならなかったことを理解してこのajax呼び出しで

1

私はあなたの問題がこのコードにあるとは思わない。投稿したコードのエラーを解決した後、$( '#submitForm')。bindの代わりにbindという名前の 'username'と$( '#subitForm')を送信すると、正常に動作します。 .htaccessかそうでなければ何らかのルーティングが起こっているのだろうかと思います。私は私のフロントエンドとバックエンドの両方に問題を抱えていたよう

+0

.htaccessについてもっと詳しく説明したいのであれば、それはすばらしいでしょう。それはバックエンドに関係していますか?私のバックエンドはNode.js/expressにあります。 私は、私の異なるルートでGETやPOSTなどを受け取ることができるので、これはフロントエンドの問題だと思っています。 –

+0

あなたの言ったことを再読した後、私の最初のコメントを削除しました。 これらのコーディングエラーを修正した後、それはバックエンドの問題であると言っています。ありがとう! –

関連する問題