2016-10-05 9 views
0

まず、他の提案に基づいて、私はpreventDefault()を移動しようとしましたが、成功しませんでした。バックグラウンドで作業する代わりに、Ajaxフォームをリロードする

私のフィードバックフォームは、フォームフィールドに「process.php」を渡すと、関連するメッセージを返すために、このJavaScriptを使用しています(例:「sucesss」または「不合格」)

それはそれを除いてその仕事を代わりに滞在していますこれで、それをロード「process.php」ページ「feedback.php」は、同じページ上... {「データ」:「データ値」}

相続コード:

$(document).ready(
function(){ 
    $('form').submit(
     function(event){ 
      var formData = 
      { 
       'name' : $('input[name=name]').val(), 
       'page' : $('input[name=page]').val() 
      }; 

      $('.form-group').removeClass('has-error'); // remove the error class 
      $('.error').remove(); // remove the error text 

      event.preventDefault(); 

      $.ajax({ 
        type  : 'POST', // define the type of HTTP verb we want to use (POST for our form) 
        url  : 'process.php', // the url where we want to POST 
        data  : formData, // our data object 
        dataType : 'json', // what type of data do we expect back from the server 
        encode : true 
       }) 

      .done(function(data){ 
        if (! data.success) 
        { 
         if (data.errors.name) 
         { 
          $('#name-group').addClass('has-error'); // add the error class to show red input 
          $('#nameField').append(data.errors.name); // add the actual error name under our input 
         } 
        } 
        else 
        { 
         $('form').append('<div class="buttonError">Message Sent!</div>'); 
         form.myButton.disabled = true; 
        } 
       } 
      ); 

      .fail(function(data){ 
        $('form').append('<div class="buttonError">Failed!</div>'); 
       } 
       console.log(data); 
      ); 
      event.preventDefault(); 
     } 
    ); 
}); 
+0

がエラーのためには、ブラウザのコンソールをチェックしてください。ページの移動後に* "Preserve log" *(またはブラウザの同等のもの)を有効にして、メッセージを残す必要があるかもしれません。 – Phil

+0

フォームを投稿してください。 – snit80

+1

'.fail'の前後に構文エラーがあります。以下の '}' ** **を 'console.log'の後ろに移動してください。 **タイプミスとして閉じる投票** – Phil

答えて

-1

は、メソッドを削除しますHTMLファイル内のformタグ内のアクションなどが含まれます。これはうまく見えます。それが動作しない場合は教えてください。

+0

これは問題を解決していません。実際には、フォームを現在のページに対して行われた 'GET'リクエストに変換するだけなので、うまくいきません。 OPは自分のJSエラーを修正する必要があります – Phil

+0

@ Phhil彼らはそのような場合にコンソールを使用する必要があります。 – borngeek

+0

[冗談なし](http://stackoverflow.com/questions/39864824/ajax-form-reloading-page-instead-of-working-in-the-background/39864868?noredirect=1#comment67017520_39864824) – Phil

0

は$アヤックスを呼び出す構文エラーが、それは次のように修正すべき次のようになります。

$.ajax({ 
     type  : 'POST', // define the type of HTTP verb we want to use (POST for our form) 
     url  : 'process.php', // the url where we want to POST 
     data  : formData, // our data object 
     dataType : 'json', // what type of data do we expect back from the server 
     encode : true 
    }).done(function(data){ 
     if (! data.success) 
     { 
      if (data.errors.name) 
      { 
       $('#name-group').addClass('has-error'); // add the error class to show red input 
       $('#nameField').append(data.errors.name); // add the actual error name under our input 
      } 
     } 
     else 
     { 
      $('form').append('<div class="buttonError">Message Sent!</div>'); 
      form.myButton.disabled = true; 
     } 
    }).fail(function(data){ 
     $('form').append('<div class="buttonError">Failed!</div>'); 
     console.log(data); 
    }); 
関連する問題