我正在尝试使用AJAX将字符串(用户单击的href的名称)发布到我的MVC控制器(然后它将用于根据字符串过滤我的表格结果)。
虽然我设法将其发布到AJAX端(至少根据警报),但它似乎无法正确到达控制器端,并且在我的快速错误捕获中被视为null(如果声明)。
请暂时不要使用无用的命名约定。我一直在尝试无数种方法来尝试解决此问题,因此,当我找到合适的解决方案时,便会正确命名:)。
我已经为此工作了很长一段时间,似乎无法解决难题,因此请您提供任何帮助!我对AJAX和MVC刚起步,所以我希望这是一个小错误。 :)(仅供参考,我尝试过发布和获取,并且似乎都产生了相同的结果?)
控制器:
[Authorize]
[HttpGet]
public ActionResult GetSafeItems(string yarp)
{
using (CBREntities2 dc = new CBREntities2())
{
if (yarp == null)
{
ViewBag.safeselected = yarp;
}
var safeItem = dc.Items.Where(a => a.Safe_ID == yarp).Select(s => new {
Serial_Number = s.Serial_Number,
Safe_ID = s.Safe_ID,
Date_of_Entry = s.Date_of_Entry,
Title_subject = s.Title_subject,
Document_Type = s.Document_Type,
Sender_of_Originator = s.Sender_of_Originator,
Reference_Number = s.Reference_Number,
Protective_Marking = s.Protective_Marking,
Number_recieved_produced = s.Number_recieved_produced,
copy_number = s.copy_number,
Status = s.Status,
Same_day_Loan = s.Same_day_Loan
}).ToList();
// var safeItems = dc.Items.Where(a => a.Safe_ID).Select(s => new { Safe_ID = s.Safe_ID, Department_ID = s.Department_ID, User_ID = s.User_ID }).ToList();
return Json(new { data = safeItem }, JsonRequestBehavior.AllowGet);
}
}
AJAX功能(在“查看”页面上):
$('.tablecontainer').on('click', 'a.safeLink', function (e) {
e.preventDefault();
var yarp = $(this).attr('safesel');
var selectedSafeZZ = JSON.stringify("SEC-1000");
$.ajax({
url: '/Home/GetSafeItems',
data: { 'yarp': JSON.stringify(yarp) },
type: "GET",
success: function (data) {
alert(yarp);
console.log("We WIN " + data)
},
error: function (xhr) {
alert("Boohooo");
}
});
})
**警报显示正确的类型:“ SEC-1000” 但是控制台日志显示:WE WIN [Object object] ??
答案 0 :(得分:1)
我已经在一个新的mvc虚拟项目中尝试了一些基本的东西:
查看页面基本文本框和一个按钮:
<input type="text" id="txt_test" value="test"/>
<button type="button" class="btn" onclick="test()">Test</button>
<script type="text/javascript">
function test()
{
var text = $("#txt_test")[0].value;
$.ajax({
url: '@Url.RouteUrl(new{ action="GetSafeItems", controller="Home"})',
// edit
// data: {yarp: JSON.stringify(text)},
data: {yarp: text},
type: 'GET',
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(data) {
// edit
// alert(JSON.stringify(data));
alert(data.data);
}});
}
</script>
控制器:
[HttpGet]
public ActionResult GetSafeItems(string yarp)
{
return Json(new {data = string.Format("Back end return : {0}",yarp)}
, JsonRequestBehavior.AllowGet);
}
警告结果=> {“ data”:“后端返回:\” test \“”}
这是对Web方法的简单ajax调用。您不会返回视图,所以我不理解
的用法if (yarp == null)
{
ViewBag.safeselected = yarp;
}
我还看到一个[Authorize]属性,您也许使用了一些身份验证,但在ajax调用中却看不到任何身份验证标头
答案 1 :(得分:1)
尝试一下:
$.each(data, function (i) { console.log("We WIN " + data[i].Serial_Number )});