параметр не отправляется в запросе ajax - PullRequest
3 голосов
/ 22 мая 2019

Я хочу вызвать метод действия (AddCompare), используя Ajax-запрос в представлении,

Моя проблема заключается в том, что параметр, отправляемый в действие AddCompare, всегда имеет нулевое значение, тогда как значение параметра в функции AddToCompareправильно

это мой код

Вид:

@model IEnumerable<Products>
@foreach (var item in Model)
{
    <li>
        <div class="left-block">

            <div class="quick-view">
                <a title="Add To Compare" class="heart" href="#" onclick="AddToCompare(15)"></a>

            </div>

        </div>

    </li>
}

<script>
function AddToCompare(param) {
        alert(param);  //display correct value 15

        $.ajax({

            type: "GET",
                url: "@Url.Action("AddCompare")",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: JSON.stringify({
                    id: param

                }),
            success: function (response) {

                var myObject = eval('(' + response.d + ')');

                if (myObject > 0) {


                    $(".errMsg").append("<ul><li>Data saved successfully</li></ul>");

                }

                else {

                    $(".errMsg").append("<ul><li>Opppps something went wrong.</li></ul>");

                }

                $(".errMsg").show("slow");


            },

            error: function (response) {

                alert(response.status + ' ' + response.statusText);

            }

        });

    }
</script>

Контроллер

public JsonResult AddCompare(int id)
{
   //id is zero !!!
    int param=id;
}

В чем проблема?

Ответы [ 3 ]

1 голос
/ 22 мая 2019

попробуй

$.get 

это синтаксис

$.get(URL,data,function(data,status,xhr),dataType)
0 голосов
/ 22 мая 2019

Поскольку вы используете глагол Get, вы можете сделать это:

                $.ajax({
                    type: "GET",
                    url: "/Controller/Action?ID=" + id,
                    dataType: "json"
                }).done(function (response) {
                    //response code here 
                });

Измените контроллер и действие в соответствии с вашими потребностями, и при необходимости вы можете добавить другие параметры в ajax.

0 голосов
/ 22 мая 2019

При вызове AJAX вам не нужно указывать строку

 $.ajax({
    // your code
    data: {id: param},

Украсьте свой метод действия с помощью HttpGet, даже если это GET по умолчанию. Просто лучшая практика.

[HttpGet]
public JsonResult AddCompare(int id)
{

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