2011-07-30 5 views
1

私は、ほぼ完成したこのjQueryプロジェクトを持っています。ユーザーのデータが成功裏に検証されたときに、$ .post関数を使って外部PHPスクリプトを実行し、ユーザーが入力した情報をパラメータとして渡します。

私の問題は私のコールバック関数は、後に警告関数を置く場合にのみ機能することです。

作品:

$.post("backend.php", dataString, 
    function(response) { 
     if (response=="1") { 
      alert("ok"); 
     } 
    }, 'html'); 

alert('test'); 

しかし、私は、終了タグの後にその警告を入れていない場合は、私のスクリプトは、「OK」、またはコールバックで何か警告を行うdoesntの。

あなたの誰かが私のコードに間違いを見ていますか?

ありがとうございます!

+0

これで任意の運?私は同じ問題を抱えています。ありがとう! –

+0

@AdamStorr申し訳ありませんが、このプロジェクトはかなり前に終了し、魔法のように修正されたコードを書き直しました。 – Souleiman

答えて

2

私の推測によれば、$.post()スクリプトの後には、ページが変更されたり、投稿が停止されたり失敗したりすることがあります。

基本的に、alert('test')はすべて、[OK]ボタンが押されるのを待ってコードをブロックします。あなたのコードを突然動かすことができる唯一の方法は、ポストを台無しにしたその2番目の警告の後にあなたのコードで何かが実行されているかどうかです。

投稿が非同期であることを忘れないでください。あなたが実行している他のコードがあればバックグラウンドで実行され、成功した場合にのみalert('ok')が実行されます。

私の推測では、あなたのページ内の何か他のものが実行中で、投稿をめちゃくちゃにしているようです。

+0

もう少し遅いですが、これは誰でも問題を解決するためのアドバイスですので、受け入れてありがとう! – Souleiman

1

私はここでパーティーに遅れていますが、私はここでまったく同じ問題であると思われ、最終的に解決策を見つけました。私の場合は、JQuery POSTコールのトリガーとして使用しようとしていたフォーム送信ボタンがありました。問題は、フォームが送信されたときに、明らかにJQuery POSTコールをキャンセルしたことでした。

私の場合、送信ボタンを通常のボタンに変更し、POST呼び出しと同じJQuery関数 - の後にフォームを送信するように解決しました。 POSTコール。私はまた、フォーム提出の呼び出しに少し遅れを導入する必要がありました。だから、それはこのように見えた:

$("#saveStuff").click(function() { //my save button, no longer a submit 
     $.post('UpdateStatusFlag', {}, function (data) { 
       //some irrelevant stuff here 
      } 
     }); 
     setTimeout("$('#MyForm').submit()", 100); //needed the small delay to allow the post call to complete 
}); 

希望これは私がやった同じ間違いを犯してそこに少数の人々を支援します。

1

ここの若いプレイヤー(自分のような)にとっては非常に微妙な罠です。私はフォームの提出イベントに投稿して、まったく同じことをしていました。もちろん、フォームは同時に投稿と投稿を同時に投稿するので、返信が返ってくると、フォームは更新されてリセットされます。混乱が治まる。

私の場合、実際にフォームを実際に提出することを嫌っていたので、サブミット機能の最後のステートメントとしてreturn false;を追加するとうまく整理されました。

例えば:

$('#myForm').submit(function() { 
    $.post('myurl',{some params}); 
    return false; 
}; 
関連する問題