尝试查看stackoverflow,因为这看起来很微不足道。找到了许多类似的问题并通读了它们。使用这些示例找不到解决方案。这是我的代码,任何人都可以帮忙吗?
function testAjax() {
return $.ajax({
type: "GET",
url: '@Url.Action("Nodes","Competence", new { userId = Sven });',
contentType: "application/json;charset=utf-8",
dataType: "json"
});
}
var promise = testAjax();
promise.success(function (data) {
var dataConverted = JSON.stringify(data);
$('#tree').treeview({ data: dataConverted, multiSelect: true });
});
ASP.NET MVC方法
public JsonResult Nodes(string userId)
{
var temp = userId;
var list = new List<Node>();
list.Add(new Node("Test1"));
list.Add(new Node("Test2"));
list.Add(new Node("Test3"));
return Json(list, JsonRequestBehavior.AllowGet);
}
编辑: 就在我即将在万圣节之夜变得疯狂之前,我想出去尝试一个新的会议。原来这只是一个缓存问题。谢谢大家的帮助
答案 0 :(得分:0)
因为它是一个GET动词,所以最容易将其作为查询字符串值传递。这也适用于RESTful设计。
例如,替换@Url.Action("Nodes","Competence")
带
@Url.Action("Nodes","Competence", new { userId = id });
然后您可以删除数据属性。这会将?userId = valueOfId 附加到您的网址中,然后应该正确地将其映射到您已正确填充userId
的操作。
<强>更新强>
正如@ freedomn-m所说:
这将在服务器端构建视图时生成URL。如果 参数永远不变,然后很好 - 但它相对不太可能 参数不会改变,在这种情况下你应该添加网址 运行时的参数,如果你想在查询字符串上。
这是完全准确的。在不知道您的确切实现的情况下,我只能做出假设。但从技术上讲,你可以在一个函数中包装你的ajax调用,然后你可以传入userId
并在该函数中生成url或传入url,在函数外部执行url生成。
这意味着您只需要一个执行ajax请求的函数,并且您可以使用另一个获取userId
的函数(并可能生成url),然后将其传递给ajax函数。你如何存储userId
完全取决于你,但我建议的一件事就是调查data attributes,这是一种在html元素上存储数据的相当明确的方法。
答案 1 :(得分:0)
由于您的服务器可能不会预期带有JSON内容的请求,请尝试删除ajax调用上的 contentType 参数。它的默认值是“application / x-www-form-urlencoded; charset = UTF-8”,对大多数情况都适用。
答案 2 :(得分:0)
它的类型应该是&#34; POST&#34;
return $.ajax({
type: "POST",
url: '@Url.Action("Nodes","Competence")',
data: { userId: "Test" },
contentType: "application/json;charset=utf-8",
dataType: "json"
});