2

Web アプリケーションの既存のフォームにいくつかの変更を加えています。フォームのコードにはアクセスできませんが、スクリプトをページに追加できるので、jQuery を使用していくつかのカスタマイズを行っています。

だから、今私はこのようなものを持っています:

jQuery( "#new_user" ).submit(function( event ) {

    event.preventDefault();

var fullname = jQuery("#user_name").val();
var email = jQuery("#email_primary").val();
var company = jQuery("#contact_customer").val();

jQuery.ajax({
        async: false,
        dataType: 'jsonp',
        url:"https://server.com/script.php",
        data: {"fullname": fullname, "email": email, "company": company},
        success: function(response){
        alert("json says " +response.res);
        }
});
    alert("hello");
});

これで問題なく動作します。私は基本的にフォームの送信を傍受しています。

問題は、そこに alert() 呼び出しを保持している場合にのみ ajax 呼び出しが実行されることです。これは明らかに望ましくありません。デバッグのためだけです。alert() 呼び出しを削除すると、フォームは送信されますが、ajax 呼び出しは正常に機能しません。JSONP リクエストを受信するはずの Web サーバーにアクセスできますが、そこに到達することさえできません。

2 番目のアラートは実際には実行されませんが、実際には何も必要ありません。Web サーバーで GET を受信するだけで済みます。

async:false を ajax() オプションに追加しようとしましたが、うまくいきません。

私は少し困惑しており、それについてかなり研究/実験しました。事前に感謝します。

4

2 に答える 2

1

そして、Ajax の成功に関するフォームを送信したかったのですね。

jQuery( "#new_user" ).submit(function( event ) {
    event.preventDefault()
    var self = jQuery(this);
    jQuery.ajax({
        async: false,
        dataType: 'jsonp',
        url:"https://server.com/script.php",
        data: {"fullname": fullname, "email": email, "company": company},
        success: function(response){
            alert("json says " +response.res);
            self.submit();
    });
});
于 2013-09-18T23:36:54.387 に答える
1

フォームが送信されないようにする必要があります。そうしないと、ajax リクエストがキャンセルされます

jQuery( "#new_user" ).submit(function( event ) {
    event.preventDefault()
    jQuery.ajax(...);
    alert("hello");
});
于 2013-09-18T23:02:15.553 に答える