1

我有如下链接。

<a href="/Customer/_EditCustomer?CustomerId=2" class="customer_details">Deneme Müşteri 2</a>
<a href="/Customer/_EditCustomer?CustomerId=3" class="customer_details">Deneme Müşteri 2</a>

我想像这样使用 jquery ajax 帖子:

$(".customer_details").click(function () {
    $.ajax({
        url: $(this).attr("href"),
        type: 'POST',
        beforeSend: function () {

        },
        complete: function () {

        },
        success: function (result) {
            $("#customer_operations_container").html(result);
        },
        error: function (result) {
            alert("Hata!");
        }
    });   //end ajax
});

或这个:

$(".customer_details").click(function () {
    $("#customer_operations_container").load($(this).attr("href"));
});

和行动方法

public ActionResult _EditCustomer(int CustomerId)
{
    // get customer from db by customer id.
    return PartialView(customer);
}

但我不能做我想做的事。当我单击链接时,PartialView 不会加载。它作为没有父页面的新页面打开。我试过 prevent.Default 但结果是一样的。

如何将 partialView 加载到 div 中?

注意:如果我使用这样的链接,<a href="#">它可以工作。

谢谢。

4

4 回答 4

1

问题是当您单击链接时,您已经开始导航到它。所以只需使用e.preventDefault()or return falsefromclick方法来防止默认行为

$(".customer_details").click(function (e) {
    e.preventDefault();
    ...
}
于 2012-11-27T08:09:57.890 回答
1

也许问题出在 actionresult 上,尝试使用 Content 看看是否会改变任何东西。

public ActionResult _EditCustomer(int CustomerId)
{
    // get customer from db by customer id.
    return Content(customer.ToString());
}

尝试其中之一...

$(".customer_details").click(function (e) {
    e.preventDefault()
    $.ajax({
        url: $(this).attr("href"),
        //I think you want a GET here? Right?
        type: 'GET',
        beforeSend: function () {

        },
        complete: function () {

        },
        success: function (result) {
            $("#customer_operations_container").html(result);
        },
        error: function (result) {
            alert("Hata!");
        }
    });   //end ajax
});

或者

$(".customer_details").click(function (e) {
    e.preventDefault();
    $("#customer_operations_container").load($(this).attr("href"));
});

或者

 $(".customer_details").click(function (e) {
    e.preventDefault();
    $.get($(this).attr("href"), function(data) {
          $("#customer_operations_container").html(data);
    });
});   

如果这些都不起作用,请检查是否有任何 js 错误

于 2012-11-27T08:19:41.570 回答
1

这应该可以帮助您:

            $.ajax({
                url: $(this).attr("href"),
                type: 'POST',
                beforeSend: function () {

                },
                complete: function () {

                },
                success: function (result) {
                    $("#customer_operations_container").html(result);
                },
                error: function (result) {
                    alert("Hata!");
                }
            });   //end ajax
            return false;

您唯一缺少的是防止 A 标签工作。通过返回false您的自定义事件被调用并且默认事件不被执行。

于 2012-11-27T08:22:55.467 回答
1

试试这个

$(function(){
    $(".customer_details").click(function (e) {
        e.preventDefault();
    });
});

使用ready事件

演示:http: //jsfiddle.net/hdqDZ/

于 2012-11-27T08:33:06.617 回答