0

次のコードがあり、フォームを送信するときに機能します (同じページにとどまります) が、送信後に現在のページを更新することも必要です。

<script>
$('form').live('submit', function(){
  $.post($(this).attr('action'), $(this).serialize(), function(response){
  // Here I need a code to refresh the page. I tried with window.location.reload(); no      success...
  },'json');
  $('form').hide();
  return false;
});

助けてくれてありがとう

4

2 に答える 2

0

自然な HTML フォームの送信とフォームの非表示が必要です。

送信前にフォームを非表示にすることはできません。そうしないと、ブラウザーは非表示フィールドを取得/投稿しないため、送信後にフォームを非表示にする必要があります。最も簡単な方法は、setTimeout を使用することです。

$(document).on('submit', 'form', function() {
  var $form = $(this);//remember $form in the closure
  setTimeout(function(){ $form.hide(); }, 0);//hide $form *after* submission
  return true;//allow natural html form submission to happen
});

setTimeout 遅延がゼロに設定されていても、$form.hide()(元の送信スレッドで) フォーム送信が発生した後、別のイベント スレッドから実行されます。

于 2012-06-29T00:21:46.680 に答える
0

「偽を返す;」jQuery では、plain-jane JavaScript と同じようには機能しません。preventDefaultを使用します。

$('form').live('submit', function(e){
    $('form').hide();
    e.preventDefault();
});

また、あなたがそれを助けることができるなら、私は「ライブ」の使用をお勧めしません... $(document).ready と $('form').submit(function(e){... を使用できる場合});

---- 編集 1:

あなたのページ(あなたのコメントに記載)で、「XMLHttpRequest はhttp://emails.loquierocomprar.com.co/wp-content/plugins/mailpress/mp-includes/action.phpをロードできません。Origin http://www.loquierocomprar.com.coは Access-Control-Allow-Origin で許可されていません。"

$.post 呼び出しが失敗し、ajax post リクエストを送信しません。したがって、成功ハンドラーがトリガーされることはなく、最終的に window.location.refresh メソッドが呼び出されることはありません。

次に、データ型「json」を使用しています。サービスが適切にフォーマットされた json を返さない場合、成功ハンドラーも正しく起動しません。

于 2012-06-29T00:07:53.780 に答える