简单javascript AJAX post函数不起作用

简单javascript AJAX post函数不起作用,javascript,ajax,function,post,Javascript,Ajax,Function,Post,嗨,我想向服务器发送数据,然后让php文件保存它。 但目前我连一个简单的帖子都找不到 这是javascript和html部分: 此函数在head中声明: function sendTableToServer(){ var xhttp; if (window.XMLHttpRequest){ xhttp=new XMLHttpRequest(); } else { xhttp=new ActiveXObject("Microsoft.XMLH

嗨,我想向服务器发送数据,然后让php文件保存它。 但目前我连一个简单的帖子都找不到

这是javascript和html部分: 此函数在head中声明:

function sendTableToServer(){
    var xhttp;
    if (window.XMLHttpRequest){
        xhttp=new XMLHttpRequest();
    } else {
        xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xhttp.open("POST","http://music.collwyncraig.info/hajimama/save_setlist.php",true);
    xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xhttp.send("fsong=AbandonSeoul");
}
然后,此html位于正文中:

<button type="button" onclick="sendTableToServer()">Save Setlist</button>
保存集合列表
这是php文件

<?php
if (isset($_POST["fsong"])){
    echo 'trying';
    $song = $_POST["fsong"]; 
    echo $song;
    echo 'ok';
}
?>

当我点击按钮时,什么也没发生。 如果我使用
和提交按钮,则php文件由浏览器加载,我可以访问输入。但是,我想使用这样的函数,因为我要发送的信息将使用javascript和HTMLDOM从html页面中取出。
那么,为什么什么都没有发生呢?:)

如果您不想使用jQuery ajax,请尝试使用纯ajax:

<html>
    <head>
    <script type="text/javascript">
    sendTableToServer()
    {

    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
        else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","http://music.collwyncraig.info/hajimama/save_setlist.php?fsong=AbandonSeoul", true);
    xmlhttp.send();
    }
    </script>


<?php
if (isset($_GET["fsong"])){
    echo 'trying';
    $song = $_GET["fsong"]; 
    echo $song;
    echo 'ok';
}
?>

sendTableToServer()
{
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
//document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”http://music.collwyncraig.info/hajimama/save_setlist.php?fsong=AbandonSeoul“,对);
xmlhttp.send();
}

来源:

记住AJAX本质上是异步的。您应该为完成和错误条件定义回调,因为您的数据不会立即返回。你可能想。JQuery确实简化了这个过程(如果有的话)


如果您的唯一目标是向服务器发送数据以写入文件,则不需要AJAX或Javascript。只需设置
,并将要发送到服务器的数据放入表单标签中。使用Javascript for AJAX的唯一原因是为了“更好的行为”,这可能比您正在寻找的简单用法更复杂。

如果您想要与表单相同的行为,除了从页面获取数据,只需创建一个表单并提交它:

var form=document.createElement('form');
形式.行动http://www.example.com/do-something';
form.method='post';
var song=document.createElement('input');
song.type='hidden';
song.name='song';
song.value='song Name';
形式.儿童(歌曲);
表单提交();

如果您正在向与地址栏中的内容不同的域发送帖子,则该帖子将失败。您不能进行跨域AJAX请求:

xhttp.open("POST","http://music.collwyncraig.info/hajimama/save_setlist.php",true);
尝试删除方案和域:

xhttp.open("POST","/hajimama/save_setlist.php",true);

这将使POST请求相对于当前域,因为此处不需要http和域。

XHTTP的回调在哪里?是否想过使用?无需大声喊叫@Gary看他的绰号:)这似乎和我的绰号很接近,除了用GET代替POST。您没有在xmlhttp.open()方法中写入.php文件的名称,对吗?这会导致回发。使用AJAX的全部原因就是为了避免这种情况。为什么你会提出这个问题?@Visionary:我对这个问题的解释是,他们想替换整个页面,就像它是通过表单提交的一样,但他们想使用AJAX,因为他们需要动态计算数据。只需在onSubmit事件中使用
return false
,或
event.preventDefault
停止重新加载页面。缺少的一个细节不应影响此解决方案的主要思想+1@jmort253:这两种解决方案都将阻止数据发送到服务器,使其毫无意义。但是,将表单的
目标设置为
iframe
即可。(虽然如果这是您想要的,那么最好(正确地)使用AJAX)@icktoofay-我正在表单onclick事件中成功地使用这种技术。据我所知,它也应该与onsubmit一起工作。如果你知道我的编辑不正确,请随时回滚我的编辑。啊,耶。实际上,它是同一个域,我刚刚编写了完整的URL来检查是否只使用文件名没有问题。谢谢