Asp.net mvc 3 如何在不使用post的情况下通过JQuery Get传递数组

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

如何在不使用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: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);

 ...