function sendSong(songN) {
console.log("sendSong ran");
var tlh = new XMLHttpRequest(), url = "http://localhost/stream/musicgrabber.php";
tlh.open("POST", url, true);
tlh.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
console.log(tlh);
//output=XMLHttpRequest {statusText: "", status: 0, response: "", responseType: "", responseXML: null…}
tlh.onreadystatechange = function() { //readystate never changes.
console.log(tlh); //this doesn't fire
if(tlh.readyState == 4 && tlh.status == 200) {
var return_data = tlh.responseText;
}
tlh.send("songname="+songN); //can't tell if this is sending or not.. nothing my php file is supposed to do, happens.
};
}
javascript文件中的其他所有内容都有效,我的问题在于对服务器的请求。我试图将POST请求发布到localhost,并在我的浏览器中运行脚本(usercript注入此页面(同样来自// localhost
/),所以我知道这很有效。)连接是我在某处找到的修改后的片段,并根据我的信息进行了修改。
chrome中的javascript控制台没有返回任何其他错误,我的PHP文件没有错误..下面:musicgrabber.php
$ssn = file_get_contents("http://localhost/stream/currentsong.txt");
if($ssn != $_POST['songname']) {
saveSong($_POST['songname']);
}else{
echo "You messed up, or it's the same song";
}
function saveSong ($sname){
$fo = fopen("currentsong.txt", 'w');
fwrite($fo, $sname);
fclose($fo);
$fcheck = file_get_contents("songhistory.txt");
if($fcheck){
$hday = date('\[m\/d\/ g:i a\ \] \\n');
$writeto = $sname + $hday + $fcheck;
file_put_contents($writeto);
}
}
当发送带有AJAX的请求时,php不会运行,文本文件没有更新,当我使用带有.php的$ _GET时?songname = test它有效..
网络返回从缓存中使用的304和200,我仍然相当新,我不知道如何查看是否正在建立连接。
我不确定自己错过了什么,但我已经在这整个事情上工作了大约12个小时,所以非常感谢所有人的帮助..
====更新====
我设法让响应工作(-ish)..我得到" XMLHttpRequest无法加载http:// localhost
/stream/musicgrabber.php。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' // www.domainhere.com'因此不允许访问。"以某种方式绕过这个?它通过localhost发送信息,所以不知道如何解决它..
答案 0 :(得分:0)
为什么不试试jquery post method
function sendSong(songN){
$.post(
url: "http://127.0.0.1/stream/musicgrabber.php",
{data: "songname="+songN},
function(response){
alert(response);
});
}
答案 1 :(得分:0)
找到我的问题的解决方案..我的所有请求协议,或者形成请求的顺序都没有了......这是我脚本的固定部分。
function sendSong(songN) {
console.log("sendSong ran");
var tlh = new XMLHttpRequest(), url = "http://127.0.0.1/stream/musicgrabber.php";
tlh.open("POST", url, true);
tlh.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
tlh.send("songname=" + songN);
console.log(tlh);
tlh.onreadystatechange = function () {
console.log(tlh);
if (tlh.readyState == 4 && tlh.status == 200) {
console.log(tlh.responseText);
}
};
}
对于跨站点问题,我通过添加:
修复了此问题header("Access-Control-Allow-Origin: *");
到我的musicgrabber.php。我需要解决的其他一些小问题,但请求正在进行中,谢谢大家的帮助。