【发布时间】:2015-06-16 14:36:03
【问题描述】:
我有一个调用 JsonResult 方法的 javascript 函数,并且 JsonResult 方法将数据发送回该函数,但是当我在 javascript 函数中使用警报对其进行测试时,它返回为未定义。我已经在 SO 上查看了几个类似的答案,例如 JsonResult returns null for Jquery .ajax 和 Jquery ajax not returning data [duplicate],但他们处理的是 POST 而不是 GET,我可以得到一些关于我做错了什么的指导或者我可以找到的方向? 最终结果是我需要从 JsonResult 方法中获取所有返回的数据,然后将其填充到文本字段中。
我的 JsonResult 方法是..
public JsonResult myResult(string id)
{
dal = new AWDAL();
List<CustomerToAdd> cust = dal.GetCustomerByID(id);
return Json(cust, JsonRequestBehavior.AllowGet);
}
我的 JavaScript 是这样的..
function DataToGet(whatever) {
alert(whatever.customerName);
}
function GetCustomerByCustomerID() {
//var id = selectCustomerID;
var result = "";
$.ajax({
type: "GET",
url: "@Url.Action("myResult", new { id = "1234-5678-9012" })",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
return DataToGet(data);
}
});
}
我发现这种方式可以做我想做的事,但它适用于 WebAPI2,我没有使用 WebAPI2,但它看起来更好,我什至不确定我是否可以用它来做我想做的事。
function formatItem(item) {
return item.Name + ': $' + item.Price;
}
function find() {
var id = $('#prodId').val();
$.getJSON(uri + '/' + id)
.done(function (data) {
$('#product').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
}
编辑 响应头
响应正文
【问题讨论】:
-
所以,问题是,当函数本身被调用服务器端时,你能在 myResult 函数中打断点吗?你能在 javascript 中点击成功断点吗?这两个发生了什么,变量
-
@Fallenreaper,我可以在服务器端命中 JsonResult,但不能命中断点客户端,它只是自动调用警报
-
我从 kendoui 网格中的选定行调用 GetCustomerByCustomerID,我只是在 GetCustomerByCustomerID 中添加了 ID,因为在将选定行的 ID 传递给函数时遇到问题
-
您是否在服务器端操作中收到您的请求?如果是,则可能是
cross-domain restrictions/Sand-box restrictions的结果。您的 JS 应该从同一个域请求。如果你不是请求同一个域,那么你应该使用 jsonp。 -
@abzarak,我在 HomeController 中有 JsonResult,它确实返回了数据,但没有从 javascript 中获取返回的数据。这就是你的意思吗?抱歉,我对 MVC 和这类东西比较陌生,我发现这是一场从 webforms 转移的艰苦战斗
标签: javascript jquery ajax asp.net-mvc