2012-03-22 10 views
1

私は私のウェブサイト上のお問い合わせフォームのためにこのスクリプトを書いて、すべてが私のデータベースに代わりにデータを格納するのが作品のすべてが取得され
[object HTMLCollection] C 誰が何この私に教えていますありますか? または何がうまくいかないのですか?私はGoogleで一見を持っているが、私はそれについて多くの情報を見つけることはできません。Ajaxのポストデータ・エラー[オブジェクトHTMLCollection]

<script type="text/javascript"> 

    //when the button is clicked 



    $(document).ready(function() { 

    $("#button").click(function() { 



     $('.small').hide(); 



       var name = $("input#name").val(); 

      if (name == "") { 

      $("span#name").show(); 

      return false; 

     } 



       var name = $("input#email").val(); 

      if (name == "") { 

      $("span#email").show(); 

      return false; 

     } 



       var name = $("input#subject").val(); 

      if (name == "") { 

      $("span#subject").show(); 

      return false; 

     } 



      var name = $("textarea#message").val(); 

      if (name == "") { 

      $("span#message").show(); 

      return false; 

     } 







     var dataString = 'name='+ name + '&email=' + email + '&subject=' + subject + '&message=' + message; 



      $.ajax({ 

      type: "POST", 

      url: "/scripts/send_message.php", 

      data: dataString, 



      }); 

    $("#messagearea").load("console/new_message_profile.php?sent=1"); 

    }); 

    }); 

    </script> 
+0

すべての変数に 'name'と同じ変数名があり、Ajaxで初期化されていない変数を渡そうとしています – Namit

+1

あなたのコードを適切にインデントしてください。 – Bergi

+0

*咳* .serialize()*咳* –

答えて

2

@Namitと同様に、どこでも変数としてnameを使用します。文字列の作成、emailsubject、およびmessageは初期化されていません。

彼らはあなたにundefinedを与えるべきですが、奇妙なInternet Explorerの動作(Is there a spec that the id of elements should be made global variable?を参照)のために、これらの変数はDOM要素を保持します。同じIDを持つ要素が複数あるように見えますが、ここでは<span><input>という変数は、HTMLCollectionのオブジェクトを保持しているようです。他の文字列と連結すると、文字列[object HTMLCollection]にキャストされます。

+0

oopsが見つかりませんでした – Cookiimonstar

0

他のすべてのフィールドにも変数nameを再利用しています。フィールド名をそれぞれの入力IDに変更する必要があります。

var name = $("input#email").val(); // needs to be email 
var name = $("input#subject").val(); // needs to be subject 
関連する問題