【问题标题】:400 error while making http request in javascript在javascript中发出http请求时出现400错误
【发布时间】:2024-05-19 05:10:01
【问题描述】:

我 ctrl+c 是 Max Payne Wiki 文章的一部分(它只是任何文本的示例):

just a screenshot of how I copy part of the article

然后我 ctrl+v 将这些东西放入我的站点中的 <textarea>(不是在代码中,而是在站点渲染的 <textarea> 中)

运行下一个javascript代码:

SomeParagraphElement.innerText=document.getElementById('my_txtarea').value;
requestp("aga.php?data="+SomeParagraphElement.innerText, callback_function);

requestp 在哪里

function requestp(path, run)
{
var request = new XMLHttpRequest();
request.open('GET', path, true); 

request.addEventListener('readystatechange' ,function()
{
if ((request.readyState==4) && (request.status==200))
run( request.responseText);
}
);

request.send(null);

}

在此之后应该有一个数据上传到服务器,但它不会发生,如果我只是用手指从键盘上写东西,甚至插入表情符号 - 一切正常。

Google Chrome 调试窗口显示我犯了 400 HTTP 错误。我试过了

var str= SomeParagraphElement.innerHTML.replace(/(?:\r\n|\r|\n)/g, '%0A'); 和另一个 %blahblah 符号,但它不会改变任何东西。

如果我通过按“回车”键自己创建一个新行,通过键盘它可以正常工作。

我该怎么办?

【问题讨论】:

  • 似乎问题在于 GET 请求长度(最大 2048b)

标签: javascript http http-error get-request


【解决方案1】:

是的,如果我传递的数据超过 2048 字节,我必须使用 POST 请求。这是一个功能,也许对某人有帮助

function requestp(path, data, callback)
{
var request = new XMLHttpRequest();
request.open('POST', path, true); 
request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');//specify this!

request.addEventListener('readystatechange' ,function()
{
if ((request.readyState==4) && (request.status==200))
callback( request.responseText);
}
);

request.send(data);

}

【讨论】: