[英]Cannot send data from aspx file to code behind using $.ajax({ type: "POST", using VS2017 C#
[英]cannot send json or text to C# bhind-code using AJAX
我有一个 AJAX 代码,我试图将一些数据发送到 C# 代码隐藏中的方法
我尝试使用文本数据类型和 json 数据类型发送它们,但它们都没有与我合作。
当我使用 json 类型时,它返回以下错误:
内部服务器错误
并且当使用文本方法时,没有出现错误并且代码通过success
函数来,但实际上数据从未发送到代码隐藏类的方法中
这是使用 json 类型的 ajax 代码:
function searchClicked(sCriterion) {
$.ajax({
type: "POST",
url: "TokenRegistration.aspx/GetSearchCritetrion",
data: "{creiterion : " + sCriterion + " }",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
},
success: function (result) {
alert("We returned: " + result);
}
这是使用文本格式的ajax代码:
function searchClicked(sCriterion) {
$.ajax({
type: "POST",
url: "TokenRegistration.aspx/GetSearchCritetrion",
data: sCriterion,
contentType: "application/text; charset=utf-8",
dataType: "text",
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
},
success: function (result) {
alert("We returned: " + result);
}
这里也是我的代码隐藏方法,数据应该发送到:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetSearchCritetrion(object selectedItem)
{
var json = new JavaScriptSerializer();
var data = json.Deserialize<Dictionary<string, Dictionary<string, string>>[]>(selectedItem.ToString());
}
我在另一个项目中使用了完全相同的 ajax 代码,它运行良好,但在这里我没有找到错误所在,所以有什么建议吗?
我想这对你有帮助。
class Item
{
public int id { get; set; }
}
[WebMethod]
public static void GetSearchCritetrion(Item selectedItem)
{
//ToDo: selectedItem.id
}
看看这是否有效而不是发送对象尝试作为字符串传递
data: JSON.stringify({selectedItem : sCriterion }),
背后的代码
public void GetSearchCritetrion(string selectedItem)
这是一个非常简单的示例,它将 JSON 发布到控制器方法,该方法将其转换为对象,然后返回响应。
HTML:
<button id="go" class="btn">Go</button>
JS:
var obj = { foo: 123, bar: "abc " };
$('#go').click(function () {
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/Test/TestJson',
data: JSON.stringify(obj),
success: function (response) {
alert(response.result)
},
failure: function (response) {
alert('fail');
}
});
});
控制器:
public class TestController : Controller
{
[OutputCache(Location = OutputCacheLocation.None)]
public JsonResult TestJson(TestClass tc)
{
return Json(new { result = "foo=" + tc.foo + " bar=" + tc.bar }, JsonRequestBehavior.AllowGet);
}
public class TestClass
{
public int foo { get; set; }
public string bar { get; set; }
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.