2011-08-25 9 views
6

Ajaxを介して連絡先フォームをPHPスクリプトに送信すると問題が発生します。私はjQuery/Ajax関数を以前にもコンタクトスクリプトとしても使用してきましたが、この場合、プロセスはajaxリクエストまで実行され、エラー:空文字列が返されます。jQuery AJAXフォームエラーです。空文字列

$(document).ready(function(){ 
    jQuery("#sendmail").click(function(){ 
     var name = $("#name").val(); 
     var phone = $("#phone").val(); 
     var email = $("#email").val(); 
     var text = $("#message").val(); 

     //var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&text=' + text; 
     var datastr ='name=' + name + '&phone=' + phone + '&email=' + email + '&text=' + text; 
     $("#form-div").css("float", "left"); 
     $("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>"); 
     $("#form-div").fadeIn("slow"); 

     alert(datastr); 

     jQuery.ajax({ 
      type: "POST", 
      url: "contact.script.php", 
      data: datastr, 
      success: function(html){ 
      $("#response").fadeIn("slow"); 
      $("#response").html(html); 
      //setTimeout('$("#response").fadeOut("slow")',2000); 
      } 
      ,error: function (XMLHttpRequest, textStatus, errorThrown) { 
           $("#response").html('there was an error'); 
          console.log('error thrown'); 
          console.log(errorThrown); 
      } 
     }); 
    }); 
}); 

あなたはhttp://www.stillframe.com.au/test.phpでの操作でページを見ることができますし、上記と同じリンクでのページのメディアせずにフォームを見ることができますが、test2.php

私は他のどのなしのスクリプトをも追加しましたjQueryは同じURLにしますが、連絡先のPHPスクリプトに直接投稿してそのスクリプトにエラーがないことを確認するtest3.phpです。

解決済み:頭部からベースのhrefタグが削除され、スクリプトが正常に機能するようになりました。

+0

あなたのURLにデータが含まれていることを確認しましたが、 'データ'行を削除しましたか? url: 'contact.script.php?name =' + name + '&phone =' +電話+ '&email =' + email + '&text =' + text、 –

+0

test2.phpでエラーが表示されない働いている? –

+0

Jamesに感謝します。テスト2では、「感謝の気持ち」の応答を受け取ったか、「エラーが発生しました」という応答を得ましたか? –

答えて

-4

以下の理由により、生のjavascriptでajaxを使用する方が良いです。

  1. コードは非常に単純で短いです。
  2. エラーで終了することはありません。
  3. あなたは、javascriptの変数を正しい休止状態でphpに送信するだけで、以下のサンプルコードを追加することができます。パラメータで

    function insert(){ 
    if(window.XMLHttpRequest) 
    { 
        xmlhttp = new window.XMLHttpRequest(); 
    } 
    else 
    { 
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
    } 
    
    xmlhttp.onreadystatechange = function() { 
        if(xmlhttp.readyState == '4' && xmlhttp.status == '200') 
        { 
         document.getElementById('msg').innerHTML = xmlhttp.responseText;  
        } 
    } 
    
    name = document.getElementById('insert').value; 
    
    parameters = 'insert=' + name; 
    
    xmlhttp.open('POST', 'day3.include.php', true); 
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(parameters); 
    

    }

に応じて、あなたのすべての変数を渡すとPHPからの応答を表示するのdiv#のMSGを作成します。あなたが任意の混乱を持っている場合は

は、代わりに、フィールドごとに使用するhttp://www.thetutlage.com

+5

-1。あなたは "決して"エラーで終わることはありませんか?本当に?私は方法を理解することができると確信しています。あなたの答えは純粋な好みであり、彼がプログラムした方法でOPの問題を解決するものではありません。 – bpeterson76

8

に私に戻って尋ねるFORMのID <form id="myform">を使用し、それをシリアル化。これを試してみてください:

$(document).ready(function(){ 
    jQuery("#sendmail").click(function(){ 
     jQuery.ajax({ 
      type: "POST", 
      url: "contact.script.php", 
      data: $('#myform').serialize(), 
      cache: false, 
      success: function(output) { 
       $("#form-div").css("float", "left"); 
       $("#form-div").html("<p>Thank you for contacting Stillframe Photography.</p><p>Please wait for just a few moments while your enquiry is being sent.</p>"); 
       $("#form-div").fadeIn("slow"); 
       $("#response").html(output); 
       $("#response").fadeIn("slow"); 
       //setTimeout('$("#response").fadeOut("slow")',2000); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
           $("#response").html('there was an error'); 
          console.log('error thrown'); 
          console.log(errorThrown); 
      } 
     }); 
    }); 
}); 
+0

ご協力ありがとうございます。このスクリプトは、多数の例外エラーを生成しました。 –

+1

どのような種類のエラー?彼らは何ですか? –

関連する問題