我尝试做的事情可能很简单,但是对jQuery并不熟悉,我无法弄清楚如何做到这一点。
我想将一些数据作为JSON发送到ASP.NET控制器。数据包含一些字符串和一个对象列表。
“守则”看起来有点像这样:
查看:
$(document).ready(function () {
var stuff = [
{ id: 1, option: 'someOption' },
{ id: 2, option: 'someOther' },
{ id: 3, option: 'anotherOne' }
];
things = JSON.stringify({ 'things': things });
var dataRow = {
'String1': 'A String',
'String2': 'AnotherOne'
}
dataRow = JSON.stringify(dataRow);
var sendData = dataRow + things;
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/Backend/DoStuffWithStuff',
data: sendData,
success: function () {
alert('Success!');
},
failure: function (response) {
alert('Fail! :(');
}
});
});
控制器:
public class Stuff
{
public int id { get; set; }
public string option{ get; set; }
}
public void DoStuffWithStuff(string String1, String2, List<Thing> things)
{
//Do my Stuff
}
任何想法都会很棒! :)
答案 0 :(得分:1)
您不需要对json数据进行字符串化。 您只需要创建一个要发送的对象,而不是
var jsonObject = {
'string' : 'string',
'object' : {
'stirng': 'string'
}
};
$.ajax({type: "POST", url: DotNetScript, data: jsonObject})
.done(function(dataBack){
//what to do with data back
});
答案 1 :(得分:0)
到目前为止它实际上看起来并不太糟糕!只是一些事情......
[HttpPost]
public void DoStuffWithStuff(string String1, String2, List<Stuff> things)
{
//Do my Stuff
}
在这里,你实际上并没有给string2一个类型。我会假设这是一个错字,但这是次要部分。
此外,在该方法中,请注意它顶部有HttpPost。在你的javascript中:
$.ajax({
...
type: 'POST',
...
});
你指定POST,所以你必须使方法支持发布(在这种情况下你也可以通过将类型更改为GET,然后删除属性,但我不确定你的“东西”需要什么来逃避GET。 ..)
var stuff = [
{ id: 1, option: 'someOption' },
{ id: 2, option: 'someOther' },
{ id: 3, option: 'anotherOne' }
];
things = JSON.stringify({ 'things': things });
var dataRow = {
'String1': 'A String',
'String2': 'AnotherOne'
}
dataRow = JSON.stringify(dataRow);
var sendData = dataRow + things;
你实际上没有将东西传递给你的方法,这可能会有所帮助......
这是使用正确的JSON传递重写的ajax方法(对于你在这里尝试做的事情)。
$(document).ready(function () {
var stuff = [
{ id: 1, option: 'someOption' },
{ id: 2, option: 'someOther' },
{ id: 3, option: 'anotherOne' }
];
var dataRow = {
String1: 'A String',
String2: 'AnotherOne'
things: stuff
}
$.ajax({
dataType: 'json',
type: 'POST',
url: '/Backend/DoStuffWithStuff',
data: sendData,
success: function () {
alert('Success!');
},
failure: function (response) {
alert('Fail! :(');
}
});
});