我正在使用Backend
触发asp.net的jQuery
方法。我已尽可能完美地设置了一切。但还是不知道出了什么问题。
请帮我解决这个问题。
我的代码:
<asp:Button ID="btnSubmit" runat="server" Text="Update" />
var jquery = $.noConflict();
jquery(document).ready(function() {
jquery("#<%=btnSubmit.ClientID%>").click(function() {
if(jquery("#form1").valid()) {
jquery.ajax({
type: "POST",
url: "Page.aspx/UpdateData",
data: jquery("#form1").serialize(),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg);
},
error: function(msg) {
alert(msg);
}
});
}
});
});
后端方法:
[System.Web.Services.WebMethod]
public static string UpdateData(string get_param)
{
// Code...
}
我还尝试使用BeakPoint
进行检查,但它不会出现在代码中。甚至,我看不出任何错误。
答案 0 :(得分:1)
我删除了内容类型。正如您使用formSerialize。它将形成类似key = value&amp; key1 = value1的数据,因此它不是json格式。
注意:确保您的表单中包含id form1。
jquery(document).ready(function() {
jquery("#<%=btnSubmit.ClientID%>").click(function() {
if(jquery("#form1").valid()) {
jquery.ajax({
type: "POST",
url: "Page.aspx/UpdateData",
data: '{ "get_param" :"' + $('form').serialize() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg);
},
error: function(msg) {
alert(msg);
}
});
}
});
});
答案 1 :(得分:0)
尝试从ajax请求中删除内容类型并获取数据
public static string UpdateData(string get_param)
string get_params= HttpContext.Current.Request["get_param"];
}
答案 2 :(得分:0)
public class MyClass
{
public string myName
{
get { return "Hello"; }
}
}
在你的aspx.cs页面中:
[WebMethod]
[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet = true)]
public static object MyMethod()
{
return new MyClass();
}
在你的ASPX页面中:
$.ajax({
url: "somepage.aspx/MyMethod",
data: {},
cache: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "GET",
success: function (data) {
if (data.hasOwnProperty("d"))
alert(data.d.myName);
else
alert(data);
},
error: function (reponse) {
alert(reponse);
}
});
答案 3 :(得分:0)
If you want to send json data, convert your data to json format.
var jquery = $.noConflict();
jquery(document).ready(function() {
jquery("#<%=btnSubmit.ClientID%>").click(function() {
if(jquery("#form1").valid()) {
jquery.ajax({
type: "POST",
url: "Page.aspx/UpdateData",
data: JSON.stringify({ get_param:jquery("#form1").serialize() }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg);
},
error: function(msg) {
alert(msg);
}
});
}
});
});
答案 4 :(得分:0)
问题是因为asp.net button
。验证完成后是刷新的页面。因此,我在preventDefault
点击按钮后使用了jquery
,它解决了我的问题。
检查我的代码:
function pageLoad() {
jquery('#<%= btnSubmit.ClientID %>').click(function (e) {
if(jquery("#form1").valid()) {
e.preventDefault(); // this line was imp
// Ajax call...
});
}