0

我有如下所示的 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 变量)。

我不断收到错误消息,说要么未定义数据,要么文字中的字符太多,等等。

有没有人成功地做到过这一点?

4

3 回答 3

2

先生,我认为您在服务器端 (<%) 标记和客户端执行上下文之间感到困惑。"data"是在客户端定义的变量,这些服务器端标签之间的所有内容都将在服务器上处理。您的页面中没有名为"data"!的变量 因为您想在服务器中使用它,并且它位于服务器端 (<% %>) 标记之间。

在客户端中,您的脚本将类似于以下代码:

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". 它没有在服务器端代码中定义。它是成功函数的参数,将在客户端执行上下文中执行。

希望它可以帮助干杯

于 2012-11-10T17:31:17.263 回答
2
'<span><a href="<%=Url.Action("Details", "myMethod")%>?id=' + data.id + '"></a></span>'
于 2012-11-10T18:47:03.937 回答
1

您不能直接执行此操作,因为代码的一部分在服务器(Url.Action部分)上运行,并且data.id仅在代码到达客户端浏览器后才可用。

但是您可以对其进行一些技巧,例如将idfrom 服务器设置为具有虚拟的唯一值,然后将其替换为 javascript ..

$("#myDiv")
   .append('<span><%=Html.ActionLink("Details", "myMethod", new {id = "-dummy-"})%></span>'.replace('-dummy-',data.id));
于 2012-11-11T11:34:11.670 回答