使用AJAX在PHP中删除$ _POST var

时间:2014-01-16 17:27:56

标签: javascript php html ajax

我所要做的就是将一个字符串(用html)发送到用PHP编写的脚本。我已经尝试了几种解决方案,包括制作一个html元素并将其放在一个表单中然后传递表单(不起作用)。我不知道AJAX或PHP的基础知识,一切都只是通过我可以google拼凑在一起。这是我尝试纠正这种情况的一种方法:(正则表达式取代了我工作的文件的第一行。我尝试使用@_POST [$ key]分配变量的foreach循环,我尝试只发送带有html希望的字符串我认为问题出在HTML或AJAX调用中,因为我可以将表单submit()转换为.php文件,然后它可以工作,但是,它会将浏览器位置更改为该文件,很明显,对于AJAX,这不是我想要的。任何人都有任何想法(除了JQuery语法)?

HTML

<form>
<input type="hidden" name="test" id="test" value="testString">
</form>

JavaScript AJAX调用

function sendString()
{
var data = document.getElementById("test");
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhr.open('POST', 'testing.php', true);
xhr.send(data);
}

PHP文件

<?php
$line = $_POST['data'];
$file = 'test.txt';
file_put_contents($file,preg_replace('/^.+/',$line,file_get_contents($file),1));
?>
编辑:感谢您的回复,但没有成功。我试过了:

document.getElementById("test");
document.getElementById("test").value;

和     xhr.send(data.value);

这些都没有奏效。还是空行。我也尝试了扩展解决方案。

2 个答案:

答案 0 :(得分:0)

http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

//改变你的功能

function sendString()
{
var data = "data="+document.getElementById("test").value;
var xhr= new XMLHttpRequest();
xhr.open('POST', 'testing.php', true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(data);
}

在testing.php中,您可以通过$ _POST:

调用它们

echo $_POST['data'];

此处示例:http://www.openjs.com/scripts/examples/ajax_using_post.php

答案 1 :(得分:0)

你的问题在这里:

var data = document.getElementById("test");

您正在创建对html元素的引用。您需要引用元素的value属性。

var data = document.getElementById("test").value;

此外,您只是将值而不是键值对发送到服务器。因此xhr.send(data);只会发送值。您的PHP脚本不会知道$_POST['data']是您的意思。您需要将var data格式化为

var data = "data=" + document.getElementById("test").value;

修改

要通过POST发送表单数据,您可能需要添加一些标题信息。

xhr.open('POST', 'testing.php', true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(data);