我所要做的就是将一个字符串(用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);
这些都没有奏效。还是空行。我也尝试了扩展解决方案。
答案 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);