这里我使用了ajax,当ajax在那时给出响应它会在一些字符(6140个字符)之后自动剪切文本,那么它是否限制了ajax响应?如果是这样,那么我该如何解决这个问题?
如果我从jsp传递给JavaScript的字符串太大,JavaScript就无法获取所有数据。神奇的数字似乎是6140个字符,任何低于它的工作正常,任何上面的东西,如果我提醒ajax.response,我看到字符串是截止的。是否定义了此限制的任何想法?
我曾使用纯粹的ajax并从www.w3school.com学习,所以就像我使用ajax并在XML标签中获得响应一样。
我的代码:
var XmlHttpRd = false;
function CreateXmlHttpRd()
{
try
{
XmlHttpRd = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
try
{
XmlHttpRd = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc)
{
XmlHttpRd = new XMLHttpRequest();//for browser mozila, opera, firefox.
}
}
}
function getAllChat()
{
var requestUrl = "remotePage.jsp?r="+Math.random();
//alert(requestUrl);
CreateXmlHttpRd();
if(XmlHttpRd)
{
XmlHttpRd.onreadystatechange = HandleResponse;
XmlHttpRd.open('GET', requestUrl, true);
XmlHttpRd.send(null);
}
}
function RefreshStatus()
{
if(refStatus)
getAllChat();
}
function HandleResponse()
{
//alert(XmlHttpRd.readyState);
//alert(XmlHttpRd.status);
if(XmlHttpRd.readyState == 4 && XmlHttpRd.status == 200)
{
//alert(XmlHttpRd.responseText); // here i uncomment alert then respnse text seen cutofff
var XmlRoot = XmlHttpRd.responseXML.documentElement;
//// Some Code here to get data//////////
}
}
答案 0 :(得分:1)
您确定响应被切断了,并且不仅仅是浏览器没有显示警告对话框中的所有文本吗?我有一些Ajax请求返回非常长的异常跟踪,这些异常跟踪显示在警告对话框中,并且它们通常被某个浏览器切断。可能是为了防止页面打开对屏幕来说太大的警告对话框。
如果您想获得全文,可以在页面中添加<textarea id="debug"></textarea>
,然后使用document.getElementById('debug').value = XmlHttpRd.responseText
获取完整回复。
我建议您不要使用全局XMLHttpRequest对象,因为它可能会在您启动第二个请求时被覆盖。然后可以执行两个请求的onreadystatechange
个处理程序并处理第二个请求两次。你可以这样做:
function doRequest() {
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4) {
if (request.status == 200) {
// process response
}
}
}
request.open(...);
request.send(...);
}
在此代码中,每个处理程序将访问请求启动时在函数中定义的请求对象,并且无法处理错误的请求。