0

(在 Firefox 和 IE9 中它不起作用。在 Chrome 中,这有效)

如果我删除 ajax,则隐藏/显示 JQuery 可以工作。有什么解决办法吗?

<form id="ppform" action="blah.asp" method="post">
<div id="saleload">Blah</div>
<button id="sendbutton">Send</button>
</form>

$(document).ready(function(){

    $('#saleload').hide();

    $('#sendbutton').click(function() {

        $('#saleload').show();

        $.ajax({
            type: "POST",
            url: /blah/blah.asp,
            data: reqBody,
            dataType: "json",
            success:function(data,textStatus){ 

                if (data.redirect) {
                   window.location.href = data.redirect;
                }else{
                    $("#ppform").replaceWith(data.form);
                }
             }
        });
    }); 
});
4

2 回答 2

3

这一行:

$("#ppform").replaceWith(data.form);

正在用您的 Ajax 请求的响应替换整个表单内容。这意味着您设置的点击处理程序也将消失,因为#sendbutton将消失。即使您在内部有另一个具有相同 ID 的按钮data.form,它也不起作用。您必须改用事件委托:

$(document).ready(function(){
    $('#saleload').hide();
    $(document).on('click', '#sendbutton', function(){
        $('#saleload').show();
        $.ajax({
            type: "POST",
            url: "/blah/blah.asp",
            data: reqBody,
            dataType: "json",
            success:function(data,textStatus){ 
                if (data.redirect) {
                   window.location.href = data.redirect;
                } else {
                    $("#ppform").replaceWith(data.form);
                }
             }
        });
    }); 
});

另外:您似乎正在reqBody向您的服务器发布一个未定义的变量,并且正如 lonesomeday 上面所说的,您在 URL 周围缺少引号。

于 2012-05-22T23:31:35.003 回答
1

显而易见的原因是您的 Javascript 存在错误,导致整个部分无法执行。快速浏览您的代码会显示这一行:

        url: /blah/blah.asp,

字符串需要用引号引起来:

        url: "/blah/blah.asp",
于 2012-05-22T23:22:55.600 回答