好吧。我再试一次。我在这里没走多远。我对ajax和jQuery非常陌生。
甚至试图查看我是否可以在服务器上获得filerValues,但没有结果。此外,我不想使用asmx页面,所以我想我不能使用web方法。
我只是试图获得带有适当的选中值的post URL,以便在服务器上解析它。每次我选中一个复选框时,它都应该将所有选中的值发送到服务器。但是,我在获取URL时遇到了困难。filterValues应该包含一个查询字符串,比如name=value&name=value&name.当我运行开发人员的控制台时,它确实显示了在有效负载中。它确实发布了正确的数据。但是,当我测试是否可以在服务器上访问它时,它总是在ajax中命中错误函数。我使用的是web表单应用程序,不是MVC,也不是asmx页面。此外,我对ajax和他们的行为也很陌生。谢谢。
编辑:
我已经想出了解决办法。事实证明,我需要发布表单数据,而不是任何其他类型的有效负载。
发布于 2015-01-14 22:34:41
我已经想出了解决办法。事实证明,我需要发布表单数据,而不是任何其他类型的有效负载。
$(function () {
$("#chkFilter").on("click", "input", function (e) {
var filterCheckboxes = new Array();
$("#chkFilter").find("input:checked").each(function () {
filterCheckboxes.push(" " + $(this).prop("name") + "=" + $(this).val() + ", ");
});
filterObj = {};
filterObj.action = "updateProjects";
filterObj.list = filterCheckboxes;
var filtersStringify = JSON.stringify(filterObj)
$.ajax({
url: "/api/project/",
type: "POST",
data: filtersStringify,
}).done(function (response) {
//some stuff to do
});
});
});
if (Request.HttpMethod == "POST")
{
// get json out of body
var serializer = new JsonSerializer();
var sr = new StreamReader(Request.InputStream);
var jtr = new JsonTextReader(sr);
dynamic data = serializer.Deserialize(jtr);
if (data.action == "getProjects")
{
getProjects(data);
}
if(data.action =="updateProjects")
{
updateProjects(data);
}
}
else
{
}
}
public void getProjects(dynamic data)
{
//do stuff with the data
}
发布于 2015-01-05 01:32:42
这个答案应该有帮助:https://stackoverflow.com/a/4508430/853295
下面是答案@Darin Dimitrov的副本
如果您想在经典WebForms应用程序中调用代码后面的方法,可以使用PageMethods
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
然后调用该方法:
$.ajax({
type: 'POST',
url: 'PageName.aspx/GetDate',
data: '{ }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(msg) {
// Do something interesting here.
}
});
下面是我给你们写的一个完整的例子:
将此方法添加到代码后面:
[WebMethod]
public static string SayHello(List<string> names)
{
var str = "hello ";
for (var i=0; i<names.Count; i++)
{
str += (names[i] + ", ");
}
return str;
}
将此添加到您的aspx文件中。
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script type="text/javascript">
var myArr = ["John", "Fred", "Sam"];
$(function () {
$.ajax({
type: 'POST',
url: 'test.aspx/sayhello',
data: "{ 'names': " + JSON.stringify(myArr) + "}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
// Notice that msg.d is used to retrieve the result object
alert(msg.d);
}
});
});
</script>
</head>
<body>
<form id="Form1" runat="server">
</form>
</body>
</html>
PageMethods不限于简单的参数类型。您可以使用任何类型作为输入和输出,它将自动被JSON序列化。
发布于 2015-01-05 01:51:17
使用ajax调用时应考虑点。
https://stackoverflow.com/questions/27771773
复制相似问题