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 回答