Asp.net mvc 3 如何在不使用post的情况下通过JQuery Get传递数组
如何在不使用post的情况下通过JQuery Get传递数组 我的jquery代码是Asp.net mvc 3 如何在不使用post的情况下通过JQuery Get传递数组,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,如何在不使用post的情况下通过JQuery Get传递数组 我的jquery代码是 $('[name="SelectHighlights"]:checked').each(function () { var row = $(this).closest('tr'); var high = { AccountName: row.find('td:nth-child(2)').text(), Highcomments: row.find('td:nt
$('[name="SelectHighlights"]:checked').each(function () {
var row = $(this).closest('tr');
var high = {
AccountName: row.find('td:nth-child(2)').text(),
Highcomments: row.find('td:nth-child(3) > input').val()
};
HighlightsArea.push(high);
});
var HL=HighlightsArea.length;
alert(''+HL);
if(HL>0)
{
GetJson(
GetRootPath() + '/WeeklySales/AjaxUpdateHighComments', //url
//JSON.stringify(HighlightsArea), //Data:
//HighlightsArea,
//{high: HighlightsArea},
{array: HighlightsArea.join(",")},
SaveChanges //callBack
);
}
GetJSon的函数:
function GetJson(url, data, onSuccess) {
$.ajax({
url: url,
data: data,
success: onSuccess,
error: GenericErrorHandler,
traditional: true,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'GET'
});
}
我的控制器中的代码:
我只想将该数组传递到此控制器,但不应使用HTTpPost
public ActionResult AjaxUpdateHighComments(List<Highlights> Highlights, WeeklySalesModel weeklysales){}
PublicActionResult AjaxUpdateHighComments(列表突出显示,WeeklySalesModel weeklysales){
请帮帮我
非常感谢您的任何帮助。
提前谢谢。你的问题有点含糊不清,但我可以试一试,假设你的意思是你想阻止发布到活动中 您可以在操作上添加一个属性以防止出现这种情况 比如说
[HttpGet]
public ActionResult AjaxUpdateHighComments(List<Highlights> Highlights, WeeklySalesModel weeklysales){}
[HttpGet]
公共行动结果AjaxUpdateHighComments(列表突出显示,WeeklySalesModel weeklysales){}
首先,包括$。从中过帐
代码
$的代码。过帐:
$.postify = function(value) {
var result = {};
var buildResult = function(object, prefix) {
for (var key in object) {
var postKey = isFinite(key)
? (prefix != "" ? prefix : "") + "[" + key + "]"
: (prefix != "" ? prefix + "." : "") + key;
switch (typeof (object[key])) {
case "number": case "string": case "boolean":
result[postKey] = object[key];
break;
case "object":
if (object[key].toUTCString)
result[postKey] = object[key].toUTCString().replace("UTC", "GMT");
else {
buildResult(object[key], postKey != "" ? postKey : key);
}
}
}
};
buildResult(value, "");
return result;
};
我知道这个名字听起来像是用于POST
,但它也适用于GET
。然后按以下方式更改代码:
$('[name="SelectHighlights"]:checked').each(function () {
var row = $(this).closest('tr');
var high = {
AccountName: row.find('td:nth-child(2)').text(),
Highcomments: row.find('td:nth-child(3) > input').val()
};
HighlightsArea.push(high);
});
var HL = HighlightsArea.length;
alert('' + HL);
if (HL > 0) {
//Property names should match the parameters' name given in the controller method
var objRequest = {
Highlights: HighlightsArea,
weeklysales: {/* weekly sales object goes here */}
};
GetJson(
GetRootPath() + '/WeeklySales/AjaxUpdateHighComments',
$.postify(objRequest), // $.postify is the key
SaveChanges //callBack
);
}
我建议您必须在传递数据时首先将JSON数组转换为字符串
客户端
请尝试将此代码添加到您的
控制器
[HttpGet]
公共操作结果AjaxUpdateHighComments(字符串突出显示)
{
JavaScriptSerializer jss=新的JavaScriptSerializer();
List listHighlights=jss.Deserialize(突出显示);
...
为什么你不能使用帖子?非常感谢。你能告诉我我需要添加什么插件吗?除了jQuery
(你已经有了),你只需要$。发布我提供的文章/链接中给出的
代码。为方便起见,我用代码更新了我的答案。非常感谢,它工作得非常好,但唯一的问题是在我上面给出的代码中,注释是文本框中的值,我在控制器中没有得到该值,它显示为空。请帮助Me关于AccountName
?您是否在控制器中获取该值/文本?在这种情况下,此行行.find('td:nth child(3)>input').val()
无法正常工作。您能否发布html输出的一段/片段?
function GetJson(url, data, onSuccess) {
$.ajax({
url: url,
data: JSON.stringify(data), // converted to string
success: onSuccess,
error: GenericErrorHandler,
traditional: true,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'GET'
});
}
[HttpGet]
public ActionResult AjaxUpdateHighComments(string highlights)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
List<Highlights> listHighlights = jss.Deserialize<List<Highlights>>(highlights);
...