jQuery Ajax, MVC и строка запросов - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть следующая функция ajax на моем представлении на веб-сайте ASP.NET MVC3. Эта функция вызывается из списка в верхней части страницы, и она прекрасно работает. Но мне нужно другое значение из строки запроса, которое нужно передать в функцию контроллера. Как мне этого добиться?

Функция jQuery

   function ShowDeals(itemNo) {
    //get the vendor



    var dialogDIV = $('<div></div>');
    $.ajax(
        {
            url: '/Deal/Index',
            type: "POST",
            data: ({ toets: itemNo }),
            dataType:'html',
            success: function (result) {
                $(dialogDIV).html(result);
                $(dialogDIV).dialog({
                    position : [,100],
                    error: function (req, status, error) {
                        alert(error);
                    }
                });
            },
            error: function (req, status, error) {
                alert(error);
            }
        })
        return false;
    }   

Действие контроллера

public ActionResult Index(int toets,string vendorNo)
    {
        string temp = toets.ToString();
        string tempdd = Request.QueryString["vendorNo"];
        //return Content("1212121212");
        return PartialView();
    }

Параметр toets передается из функции ajax, но теперь мне нужен vendorNo, находящийся в строке запросов.

Спасибо

РЕДАКТИРОВАТЬ: Я знаю, что могу добавить функцию javascript, чтобы получить значение из строки запроса, но это лучший способ сделать это?

Ответы [ 2 ]

5 голосов
/ 13 сентября 2011

Вы можете передать это так же, как и в вашем toets параметре:

var vendor = $("#TheElementThatHoldsYourVendor").text();
$.ajax(
{
    url: '/Deal/Index',
    type: "POST",
    data: ({ toets: itemNo, vendorNo: vendor }),
    ....
});

И тогда у вас будет второй параметр, вам не нужно обращаться к QueryString, чтобы получить его.

EDIT
Чтобы получить параметр url с помощью JavaScript, вы можете использовать этот метод ( отсюда )

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

А затем назовите это так:

$.ajax({
    ...
    data: { toets: itemNo, vendorNo: getUrlVars()['vendorNo'] }
    ...
});
0 голосов
/ 13 сентября 2011
function ShowDeals(itemNo) {
    //get the vendor

    var venderNo = $("#TheElementThatHoldsYourVendor").text();

    var dialogDIV = $('<div></div>');
    $.ajax({
        url: '/Deal/Index?vendorNo=' + venderNo,
        type: "POST",
        data: ({ toets: itemNo }),
        ...
}   

Если действие контроллера ищет строку запроса, вам необходимо добавить строку запроса в URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...