参数不发送ajax请求

时间:2019-05-22 19:25:20

标签: ajax asp.net-mvc .net-core

我想在视图上使用Ajax请求调用操作方法(AddCompare)

我的问题是,发送给AddCompare Action的参数始终为零值, 虽然函数AddToCompare中的参数值正确

这是我的代码

查看:

  $('#buscar_menu .select2-search__field').focusout(function(e){
    e.stopPropagation();
    /*if(e.target.classList[0] == "search_field"){
        console.log("eureca");

    }else{
                    console.log("not eureca");
            }*/
});

控制器

@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>

问题出在哪里?

3 个答案:

答案 0 :(得分:1)

尝试

$.get 

这是语法

$.get(URL,data,function(data,status,xhr),dataType)

答案 1 :(得分:0)

在AJAX通话中,您无需进行字符串化

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

HttpGet装饰您的操作方法,即使默认情况下为GET。只是更好的做法。

[HttpGet]
public JsonResult AddCompare(int id)
{

}

答案 2 :(得分:0)

因为您使用的是Get动词,所以您可以这样做:

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

根据需要更改控制器和操作,并且可以根据需要向ajax添加其他设置。