【问题标题】:Ajax loaded partial view not renderingAjax 加载的部分视图不呈现
【发布时间】:2016-03-12 07:26:05
【问题描述】:

我正在进行 ajax 调用以检索部分视图并将其放入 div 中。

$.ajax({
    url: '@Url.Action("GetPartial", "ControllerName")',
    type: 'GET',
    success: function (data) {
        $('#myDiv').html(data);
    }
});

但是,当我有 $('#myDiv').html(data); 时,#myDiv 没有任何 html,但是当我尝试这个时:

$.ajax({
    url: '@Url.Action("GetPartial", "ControllerName")',
    type: 'GET',
    success: function (data) {
        $('#myDiv').html("<div>Whatever</div>");
    }
});

正如预期的那样,div 被&lt;div&gt;Whatever&lt;/div&gt; 填充。所以这里是data变量的内容:

<tr>
    <input type="radio" style="margin-right: 10px" name="credit-card" value="fjxtnw" checked />
    <strong>555555******4444</strong> (MasterCard)
    <label style="color: #808080; font-size: small">(default)</label>
    <span id="fjxtnw" class="delete_pm"><label style="color: darkred; font-size: small; margin-left: 5px">delete</label></span>
</tr>
<br />
<br />
<tr>
    <input type="radio" style="margin-right: 10px" name="credit-card" value="9rmqsw" />
    <strong>411111******1111</strong> (Visa)
    <span id="9rmqsw" class="delete_pm"><label style="color: darkred; font-size: small; margin-left: 5px">delete</label></span>
</tr>
<br />
<br />

但是什么都没有渲染。

有什么想法吗?

【问题讨论】:

  • 我没有看到你在成功回调中使用“数据”......至少你应该有类似 .. $('#myDiv').html("
    随便:"+data+"
    ");
  • @Sam.C,我确实用过,仔细阅读,我的第一个代码 sn-p 显示它正在使用
  • @Sam.C,是的,返回的数据在最后一个代码sn-p中描述,这就是data变量中的内容
  • 问题是您试图将“tr”元素放入“div”中...尝试将其添加到表格正文中

标签: jquery html ajax asp.net-mvc partial-views


【解决方案1】:

试试$('#myDiv').html(data.d);

或测试console.log(data) 以查看对象即将到来..

【讨论】:

  • 对象来了,它包含我在问题中发布的内容 - 请参阅我的上一个代码 sn-p
  • 好的。它是直接作为文本出现还是在 js 对象中出现?
  • 纯文本 Pedrito
  • 所以,尝试将值传递给另一个变量,如 success: function (data) { var d = data; $('#myDiv').html(d); }(但我不知道我在做什么)
  • :) You are right!不过感谢您的努力!
【解决方案2】:

您返回的部分视图不是格式良好的 HTML 表格,因此应该是这样的

<table>
    <tr>
<td>
        <input type="radio" style="margin-right: 10px" name="credit-card" value="fjxtnw" checked />
        <strong>555555******4444</strong> (MasterCard)
        <label style="color: #808080; font-size: small">(default)</label>
        <span id="fjxtnw" class="delete_pm"><label style="color: darkred; font-size: small; margin-left: 5px">delete</label></span>
</td>
        </tr>
        <tr>
<td>
            <input type="radio" style="margin-right: 10px" name="credit-card" value="9rmqsw" />
            <strong>411111******1111</strong> (Visa)
            <span id="9rmqsw" class="delete_pm"><label style="color: darkred; font-size: small; margin-left: 5px">delete</label></span>
</td>
        </tr>

</table>

那么你的 jquery 可以只是

$('#myDiv').html(data);

或者如果你已经有一个表格 HTML,你只想插入你可以做的行......删除“表格”标签并将 jquery 更新为:

$("#myTable").append(data);

【讨论】:

  • 谢谢山姆。我已经找到了解决方案,我猜它与结构有关。我不需要table 标签,只需要tr 之后的td 标签。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多