0
function showDialog(link) {
    $('#dialog .newsletter-join').click(function() {
        email = $.trim($(this).parent().find('.email').val());
        if (email != "Email Address" && email.length > 5) {
            $.ajax({
                url: '/newsletter/join',
                data: {
                    'email': email,
                    'pid': $('#dialog .pid').html().trim()
                }
            });

            return true;
        }
        return false;
    });
}

このコードは FF で正しく実行され、Chrome ではデバッグ モードで実行すると完全に実行されます。それ以外の場合は何も返されません。

実行すると、何も表示されない警告ボックスが表示されます。コンソールの XMLHttp 応答にも何も表示されません。私は他のいくつかの変更を試みました:

cache:false // It just exeutes for the first time 
datatype:html 

この問題を追跡する方法を教えてください。

更新されたコード:

次のスクリプトを使用してコードを呼び出しています

$(document).ready(function() {
    // $(window).load(function () {
    showDialog();
    return true;
    //});
});

function showDialog(link) {
    $('#dialog .newsletter-join').click(function() {
        email = $.trim($(this).parent().find('.email').val());
        if (email != "Email Address" && email.length > 5) {
            $.ajax({
                url: '/newsletter/join',
                data: {
                    'email': email,
                    'pid': $('#dialog .pid').html().trim()
                },
                success: function(data) {
                    alert("Suvvess" + data);
                },
                error: function(xmlHttpRequest, textStatus, errorThrown) {
                    alert("error" + errorThrown);
                }
            });

            return true;
        }
        return false;
    });
}

最新のコード変更:追加しました

  async: false

このajax呼び出しの変更により、期待される結果が得られますが、これによりすべてのスクリプトの実行が停止するため、これは永続的な解決策ではないと感じています

4

1 に答える 1

6

エラー後にajax関数を閉じる必要があります

$.ajax({
                url:'/newsletter/join',
                data:{ 'email':email, 'pid':$('#dialog .pid').html().trim() }

  >>>HERE REMOVE IT        });
于 2012-07-11T20:08:50.313 に答える