我正在尝试通过AJAX将动态的,用户创建的对象传递给某些C#。我对JSON并不是很熟悉,但它似乎是一个很好的方法。我不知道为什么,但它在我声明对象时给了我一个错误。 (据说。)我做错了什么?感谢。
编辑:IE中似乎只有错误,但我需要它在IE7中工作。网页错误详情
用户代理:Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0 ;. NET4.0C; .NET4.0E; MDDC; InfoPath.2) 时间戳:2012年3月28日星期三14:15:19 UTC
消息:预期的标识符,字符串或数字 行:18 查尔:21 代码:0 URI:http://localhost:56560/Default.aspx
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
$(function() {
$('input[type=button').click(function(){
var json_obj = { $('#t1').val() : $('#p1').val(),
$('#t2').val() : $('#p2').val()};
$.ajax({
typeof: "POST",
url: '/test.aspx',
contentType: 'application/json; charset=utf-8',
data: json_obj,
dataType: 'json',
success: function(msg) {
alert('Success!');
},
error: function(msg) {
alert('Error!');
}
});
});
});
</script>
</head>
<body>
<div>
Type: 1: <input type="text" id="t1" />
Property 1: <input type="text" id="p1" />
Type 2: <input type="text" id="t2" />
Property 2: <input type="text" id="p2" />
<input type="button" value="Add object!" />
</div>
</body>
</html>
背后的代码
public class Test
{
public Test(string json)
{
JObject jObj = JObject.Parse(json);
JToken jUser = jObj["json_obj"];
first = (string)jObj["t1"];
second = (string)jObj["t2"];
}
public string first { get; set; }
public string second { get; set; }
}
答案 0 :(得分:2)
我认为你的json数据的格式是错误的。试试这个:
var json_obj = "{'" + $('#t1').val() + "' : '" + $('#p1').val() + "', '" + $('#t2').val() + "' : '" + $('#p2').val() + "'}";
答案 1 :(得分:0)
您可以在C#代码中添加一个函数,例如:
[HttpPost]
public JsonResult Test()
{
return Json(new {Success = true, CustomJSONAttribute="Whatever You Like"});
}
然后调整你的JQuery ajax指向Test(),然后在你的成功函数中你可以做:
msg.Success和msg.CustomJSONAttribute
答案 2 :(得分:0)
对于它的价值,我一直在努力奋斗数小时。我最终通过确保$ .ajax调用中的JSON对象/ var与C#中的参数名称匹配来解决我的缺失参数问题。老实说,我无法相信这就是问题所在。
[WebMethod]
public static void SetSession(String **json**)
{
String s = json;
}
...
var json_obj = "{'" + '**json**' + "' : '" + 'the_val' + "'}";
$.ajax({
type: "POST",
url: "my_page.aspx/SetSession",
data: json_obj,
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function ()
{
alert('SetSession executed.');
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert("Status: " + textStatus); alert("Error: " + XMLHttpRequest.responseText);
}
});