不能使用AJAX将json或文本发送到c#后台代码
本文关键字:代码 后台 文本 AJAX json 不能 | 更新日期: 2023-09-27 18:12:08
我有一个AJAX代码,我试图将一些数据发送到c#代码中的方法
我试着用文本数据类型和json数据类型发送他们,但他们都没有和我一起工作。
当我使用json类型时,它返回以下错误:
内部服务器错误
和使用text me时方法,没有出现错误,代码通过success
函数,但实际数据从未发送到代码隐藏类
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代码,它工作完美,但在这里我没有得到错误的地方,所以有什么建议吗?
看看是否有效而不是发送对象,尝试传递字符串
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; }
}
}
我想这对你有帮助。
class Item
{
public int id { get; set; }
}
[WebMethod]
public static void GetSearchCritetrion(Item selectedItem)
{
//ToDo: selectedItem.id
}