Web方法不在safari中执行($ .ajax回调)

时间:2012-06-20 12:10:42

标签: jquery asp.net ajax webmethod

我有以下代码。

ASPX页面

<a href="AnyASPXPageOfWebsite.aspx" onclick="javascript:CallJQuery();" > Set Price </a>

JS代码

function CallJQuery() {

            var prc = document.getElementById('<%= hdnPrice.ClientID %>');
            var strPrc = prc.value;

            $.ajax({
                type: "POST",
                url: "/Services/TestService.asmx/SetPrice",
                data: {Price : "'"+ strPrc + "'"},
                dataType: "json",

                error: function(xml, status) {
                    alert('Error is ' + status);
                },
                success: function(xml, status) {
                    alert('suceess' + status );
                }

            });
}

TestService.asmx中的Webmethod

 [WebMethod(EnableSession = true)]
    public string SetPrice(string Price)
    {
        HttpContext.Current.Session["ProdPrice"] = Price;
        return "success";
    }

我的代码适用于除SAFARI之外的所有浏览器   我在SetPrice()方法中设置断点,但在safari的情况下不执行。   此外,还会执行成功功能并显示警告信息

safari没有执行该方法的原因是什么?

2 个答案:

答案 0 :(得分:0)

可能正在使用服务器控件并从后面的代码调用Call JQuery()也无济于事。

答案 1 :(得分:0)

我搜索了很多解决方案,应用了很多代码,但没有任何作用 我得出结论,在野生动物园中不可能实现以下。 如果在asp.net c#页面中,如果你有href属性设置为“any aspx或html page”的标签,并且标签有“onclick”事件,它会占用一些JS函数,然后使用JQuery Callback执行“Web方法”。这种情况不起作用,并且webmethod不会在这种情况下执行,因为safari浏览器执行JS函数然后导航到页面(在href属性中设置),但不调用webmethod。

这完全符合我的研究。