我想在视图上使用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>
问题出在哪里?
答案 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添加其他设置。