Estou usando métodos de ASP.net. Esse problema que estou tendo é que ele não funcionará com determinados navegadores. por exemplo, IE, Opera Safari e o novo Firefox. Funciona com o Chrome. Encontrei isso, mas não ajudou no meu caso http://www.carlj.ca/2008/06/18/fixing-firefoxs-ns_error_not_available-error-when-using-pagemethods/ qualquer ajuda seria muito apreciada.
<asp:ScriptManager ID=”scManager″ enablepagemethods=”true” runat=”server” />
<asp:Button ID="btnBuyNow" runat="server" Text="Buy Now" OnClientClick="AddProductToCart()" />
<script type="text/javascript">
function AddProductToCart() {
//hard coded values for testing, productId, quantity
PageMethods.AddProduct(142, 1);
window.location.href = "../Cart.aspx";
}
</script>
[System.Web.Services.WebMethod]
public static void AddProduct(string prodId, string quantity)
{
//adding product to cart
//When testing with Chrome breakpoint is hit,
//All other browsers dont hit break point
CurrentCart.AddProduct(prodId, quantity);
}
Respostas:
0 para resposta № 1<script language="javascript" type="text/javascript"> $(document).ready(function() { $("#Save").click(InsertClient); } ); function InsertClient() { var BizName = $("#txtBizName").val(); alert(BizName); $.ajax({ url: "Common.asmx/InsertClient", type: "POST", dataType: "json", data: "{BizName:"" + BizName + ""}", contentType: "application/json; charset=utf-8", success: function(msg) { $("#status").html("Id: "+msg["d"]["Id"]); }, error: function(e) { $("#status").innerHTML = "Unavailable"; } }); } </script> in Common.asmx write webmethod as follow [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public Client InsertClient(string BizName) { Client objClient = new Client(); objClient.BizName = BizName; InsertData(objClient); return objClient; }
0 para resposta № 2
Pode haver uma solução melhor para isso, mas essa foi a única coisa que acabou por funcionar.
<script type="text/javascript">
function AddProductToCart() {
//hard coded values for testing, productId, quantity
PageMethods.AddProduct(142, 1);
var millisecondsToWait = 500;
setTimeout(function () {
window.location.href = "../Cart.aspx";
}, millisecondsToWait);
}
</script>