我想首先说我宁愿任何建议都不包括JQuery;我不喜欢JQuery如何成为JavaScript中的事实标准
所以这是我的问题:
我想将一个变量传递给一个函数,然后该函数将该变量用作.open()中文件的路径。到目前为止,这是我的代码:
被调用的函数示例:
ajaxPost('chatlog.txt',null);
被调用的函数:
function ajaxPost(targetPath,toSend){
var getMessage;
if (window.XMLHttpRequest){
getMessage=new XMLHttpRequest();
}
else{
getMessage=new ActiveXObject("Microsoft.XMLHTTP");
alert("Stop using Internet Explorer.");
}
getMessage.open("POST",targetPath,true);
getMessage.onreadystatechange=function(){
if (getMessage.readyState==4 && getMessage.status==200){
alert(getMessage.responseText);
}
};
getMessage.send(toSend);
}
不幸的是,由于某些歌舞伎的原因,这不起作用。
答案 0 :(得分:0)
添加
getMessage.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
发送之前。它告诉服务器如何处理POST内容。
答案 1 :(得分:0)
我在您的代码中看到了一些逻辑问题:
使用POST
方法的整个想法是将任何类型的数据发送到特定的后端,并根据该数据执行服务器端的东西,但是这里使用的是POST
方法实际上是GET
'chatlog.txt'
。因此,您必须先使用GET
方法。
但是如果你仍然坚持使用POST
代替GET
,你应该知道你可以使用POST方法而不是GET而且它会做同样的事情,但你会面对一些不可预见的问题。
您的实际问题:
我加载了您的实际页面并看到了您的问题,您的控制台出错:
无法加载资源:服务器响应状态为405(方法不允许)
正如我所说,这意味着你必须改变你的方法。我这样改了:
function ajaxPost(targetPath,toSend){
var getMessage;
if (window.XMLHttpRequest){
getMessage=new XMLHttpRequest();
}
else{
getMessage=new ActiveXObject("Microsoft.XMLHTTP");
alert("Stop using Internet Explorer.");
}
getMessage.open("GET",targetPath,true);
getMessage.onreadystatechange=function(){
if (getMessage.readyState==4 && getMessage.status==200){
alert(getMessage.responseText);
}
};
getMessage.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
getMessage.send(toSend);
}
它返回了这样的数据:
<b>Peck:</b> Hello World!<br/>#
<b>World:</b> Hello Peck!<br/>#
答案 2 :(得分:-1)
使用XMLHttpRequest是一个非常糟糕的主意。如果您已经在使用JQuery,请尝试以下方法:
$.post( "test.php", {name: "John", time: "2pm"}).done(function( data )
{
alert ("Succes! Data received: " + data);
});