【发布时间】:2016-01-09 19:05:31
【问题描述】:
我有一个在前端通过 AJAX 调用的 VB.NET 函数。 AJAX 调用会传回一些参数,后端的函数会生成一个 HTML 表格,并将其作为字符串返回给前端。例如,我会返回类似:<table><tr><td>hello</td></tr></table>。
我的 VB 函数如下所示:
Public Shared Function MakeTable(arg1, arg2) as String
' Do magic
return myTableInStringFormat
End Function
我在使用我的代码时遇到了一些问题,并将其缩小到来自后端的字符串的长度。当返回的字符串大于 65535 个字符时,它不会到达前端。我相信这与以下内容有关:https://msdn.microsoft.com/en-us/library/wdzat713.aspx
如何在避免字符串字符行限制的同时返回数据?行继续字符似乎是答案,但我不确定如何使用这些字符,因为我需要返回一个字符串。
EDIT1:更多代码。这是我的 AJAX 回发代码,以及表格附加代码:
function GetMyTable(arg1, arg2) {
type: "POST",
url: myHandler.ashx/MakeTable",
data: "{'arg1':'" + arg1+ "','arg2':'" + arg2+ "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#myTable").empty().append("").append(msg.d);
},
error: function () {
alert("Failed to load ");
}
});
}
编辑2。这是 AJAX 调用的后端函数:
<System.Web.Services.WebMethod()> _
Public Shared Function MakeTable(arg1 As String, arg2 As String) As String
Dim dString As New StringBuilder
' Some datareader gets data from database...
dString.Append("<tr><td>hello</td></tr>")
return dString.toString()
End Function
【问题讨论】:
-
指南是指代码,特别是一行代码,而不是变量的长度,这不是你的问题。检查浏览器的控制台日志是否给你同样的错误,有时这是一个安全问题,因为发送代码有潜在的危险。
-
没有收到任何错误。没有任何东西被退回。小于 65535 个字符的字符串是可以的。
-
一个字符串可以是大约 20 亿个 unicode 字符,所以它可能也不是。
-
首先,我们需要查看更多代码才能提供帮助。如果你在上述函数的开头打断点,你得到的错误信息是什么?
-
@Caboose 所以,向我们展示更多代码。我不知道您的所有代码,但是当您在服务器端获取 html 代码(尤其是某些字符)时,您必须设置 validateRequest="false" 但这也可能很危险。
标签: javascript jquery ajax vb.net