我的AJAX请求如下所示:
jsonData = JSON.stringify({stuff: stuff});
$.ajax({
url: '<%=Url.Action("myMethod", "myController") %>',
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: jsonData,
success: function (data) {
$("#myDiv").append('<span><%=Html.ActionLink("Details", "myMethod", new {id = data.id })%></span>');
}
)};
修改!我试图将这个Actionlink附加到“成功”的div上。我在最初的帖子中忘记了$(“#myDiv”)。append()代码。
在new {id = data.id }
部分,我想在此动作链接中使用data.id(一个javascript变量)。
我不断收到错误,说明数据未定义,或文字中的字符数太多等。
之前有没有人成功完成这项工作?
答案 0 :(得分:2)
先生,我认为你在服务器端(&lt;%)标签和cliend side执行上下文之间感到困惑。 "data"
是在客户端定义的变量,这些服务器端标记之间的所有内容都将在服务器上处理。您的页面中没有名为"data"
的变量!因为你想在服务器中使用它,它在服务器端(&lt; %%&gt;)标签之间。
在客户端中,您的脚本将类似于以下代码:
jsonData = JSON.stringify({stuff: stuff});
$.ajax({
url: 'THE_PROCESSED_RESULT_OF_SERVER_TAG_GOES_HERE',
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: jsonData,
success: function (data) {
'<span>THE_PROCESSED_RESULT_OF_SERVER_TAG_GOES_HERE</span>'
}
)};
使用开发人员工具(或任何其他内容)检查文件内容,您将看到客户端实际发生的情况。
<强>更新强>
再次!你不能做我已经提到过的事情。服务器端代码和客户端代码之间存在差异。无论您希望如何访问名为"data"
的变量。它没有在服务器端代码中定义。它是将在客户端执行上下文中执行的成功函数的参数。
希望它有所帮助 干杯
答案 1 :(得分:2)
'<span><a href="<%=Url.Action("Details", "myMethod")%>?id=' + data.id + '"></a></span>'
答案 2 :(得分:1)
您无法直接执行此操作,因为代码的一部分在服务器上运行( Url.Action
部分),data.id
仅在代码到达时可用客户端浏览器..
但你可以做一个技巧,比如将id
从服务器设置为具有虚拟唯一值,并将其替换为javascript ..
$("#myDiv")
.append('<span><%=Html.ActionLink("Details", "myMethod", new {id = "-dummy-"})%></span>'.replace('-dummy-',data.id));