2011-07-29 4 views
2

私はjQueryとJavaScriptにかなり新しいです。実際の電子メールを送信するためにPHPファイルを呼び出すjQuery連絡フォームを実装しようとしています。ここで高度なjQueryフォームの検証 - GETからPOSTへの変更方法

は、jQueryの検証が通過した後にPHPファイルを呼び出すjQueryの部分である:

$name = mysql_real_escape_string($_GET['name']); 
$number = mysql_real_escape_string($_GET['number']); 
$company = mysql_real_escape_string($_GET['company']); 
$email = mysql_real_escape_string($_GET['email']); 
$message = mysql_real_escape_string($_GET['message']); 
$ip = $_SERVER['REMOTE_ADDR']; 
$timestamp = date("y/m/d : H:i:s", time()); 
$from_url = mysql_real_escape_string($_GET['from_url']); 

// send email etc... 

私はこれを持っている:

$(this).click(function() { 

    var result = $.formValidator(options); 

    if (result && jQuery.isFunction(options.onSuccess)) { 
     options.onSuccess(); 

     // Start Processor 
     if($(this).data('formstatus') !== 'submitting'){ 

      // Setup variables 
       // Form Variables 
        var name = $(".form input#getstarted-name").val(); 
        var number = $(".form input#getstarted-phone1").val() + ' ' + $(".form input#getstarted-phone2").val(); 
        var company = $(".form input#getstarted-company").val(); 
        var email = $(".form input#getstarted-email").val(); 
        var message = $(".form textarea#getstarted-message").val(); 
        var from_url = $(".form input#getstarted-from_url").val(); 

       // Consolidate Variables 
       var dataString = 'name=' + name + '&number=' + number + '&company=' + company + '&email=' + email + 
          '&message=' + message + '&from_url=' + from_url; 
      var form = $(this), 
       //formData = email.serialize(), 
       formData = dataString, 
       formUrl = form.attr('action'), 
       formMethod = form.attr('method'), 
       responseMsg = $('#startproject-response'); 

      //add status data to form 
      form.data('formstatus','submitting'); 

      //show response message - waiting 
      responseMsg.hide() 
         .removeClass('response-error') 
         .removeClass('response-success') 
         .addClass('response-waiting') 
         .text('Please Wait...') 
         .fadeIn(200); 

      $.ajax({ 
       url: "/layout/js/jquery/forms/form_db_process.php", 
       type: formMethod, 
       data: formData, 
       success:function(data){ 

        //setup variables 
        var responseData = jQuery.parseJSON(data), 
         klass = ''; 

        //response conditional 
        switch(responseData.status){ 
         case 'error': 
          klass = 'response-error'; 
         break; 
         case 'success': 
          klass = 'response-success'; 
         break; 
        } 

        //show reponse message 
        responseMsg.fadeOut(200,function(){ 
         $(this).removeClass('response-waiting') 
           .removeClass('response-error') 
           .addClass(klass) 
           .text(responseData.message) 
           .fadeIn(200,function(){ 
            //set timeout to hide response message 
            setTimeout(function(){ 
             responseMsg.fadeOut(200,function(){ 
              $(this).removeClass(klass); 
              form.data('formstatus','idle'); 
             }); 
            },3000) 
           }); 
        }); 
       } 
      }); 
     } 

     //prevent form from submitting 
     return false; 

     // End Processor 

    } 
}); 

そしてここでは、PHPファイル "form_db_process.phpは" ですすべての作業を行うが、代わりにGETをPOSTに変更する方法が不思議だったのだろうか?私は、通常のHTML + PHPでこれを行う方法を知っているが、jQueryのは、私は途方に暮れてよ...

私はここに見えた:

http://api.jquery.com/jQuery.post/

しかし、実行可能なものを思い付くことができませんでした/なかったですどのようにそれを使用するかを確認してください。 助けていただけたら幸いです!

//編集:私は(フォームの)下のHTML部分を追加しました:jQueryので

<form id="startproject-form" class="form" method="post" action=""> 

<!-- ... form inputs here ... --> 

</form> 
+0

私はあなたのフォームを推測しています(var form = $(this))はGETメソッドを持っていますか?それをPOSTに変更しようとしましたか? – Drizzt321

+0

HTML部分を "POST"に変更しました。 – Jay

答えて

3

$.ajax({ 
    type: 'POST', 

あなたのコードはありません:

$.ajax({ 
       url: "/layout/js/jquery/forms/form_db_process.php", 
       type: formMethod, 

formMethodは先に設定されています:

var form = $(this), 
       //formData = email.serialize(), 
       formData = dataString, 
       formUrl = form.attr('action'), 
       formMethod = form.attr('method'), 

オーバーライドするか、実際にフォームのMETHOD属性をPOSTに変更します。

+0

「//変数を統合する」 var dataString = 'name =' + name + '&number =' + number + '&company =' + company + '&email =' + email + '&message =' + message + '&from_url =' + from_url; " – Jay

+1

あなたの' $ .ajax'の 'data'引数として渡してください。 – Konerak

+0

Konerak:私はformMethodがHTMLフォームの 'method = "post"属性を探しているだけだと思います。 HTMLフォームは既にPOSTに変更されています(上記のコードを追加しました)。 – Jay

1

$.ajaxはGETとPOSTの両方を行うことができます。これはフォームのmethod属性から取得されたフォームタイプであり、変更することができます。

$.ajaxを画面の後ろに呼び出す$.getまたは$.postの略字を使用することもできます。

0

まず、formMethodが 'POST'であることを確認します。データをjson形式でクエリ文字列で渡します。その場合、それに応じてdatatypeとcontentTypeを指定する必要があります。

関連する問題