大家好,这不正常:) !!
foo.php
<?php
if (isset($_POST['data']))
$stringData = $_POST['data'];
$file = "ciao.txt";
$fh = fopen($file, 'w') or die("can't open file");
fwrite($fh, $stringData);
fclose($fh);
?>
file.js
function WriteToFile() {
var dataa = "foo bar";
$.post("foo.php", {data: dataa}, function(result){ alert("ciaoooo!!");}
, "json");
}
这是错误,我无法写入我的file.txt
注意:未定义的变量:stringData
我也尝试过这种功能
function WriteToFile() {
var data = "foo bar";
$.ajax({
url: 'foo.php',
type: 'POST',
data: { 'data' : 'data'},
success: function() {
alert('the data was successfully sent to the server');
}
});
but the result is the same!! Anyone have some idea???
答案 0 :(得分:4)
你缺少大括号:
if (isset($_POST['data'])) {
$stringData = $_POST['data'];
$file = "ciao.txt";
$fh = fopen($file, 'w') or die("can't open file");
fwrite($fh, $stringData);
fclose($fh);
}
没有他们,你基本上就有这个:
if (isset($_POST['data'])) {
$stringData = $_POST['data'];
}
$file = "ciao.txt";
$fh = fopen($file, 'w') or die("can't open file");
fwrite($fh, $stringData);
fclose($fh);
这解释了为什么你得到了未定义的$stringData
,因为POST没有正确执行。
请注意,这并不能解决您的JS / jQuery问题。为此,请参阅其他答案。
答案 1 :(得分:2)
好的,我想这就是发生的事情:
您发布的代码(示例1中的foo.php / file.js)是正确的,并且可以正常运行。我不确定您是否试图直接在浏览器中点击foo.php URL。在这种情况下,没有发布任何内容,因此$ stringData将是未定义的,它将抛出您所看到的通知。
您需要做的是: 1.将file.js脚本包含在HTML文件中。 2.确保包含jquery库 3.确保$ .POST中的PHP(foo.php)文件路径正确 4.在HTML body onLoad函数
上调用WriteToFile()这是一个应该有效的HTML示例(如果需要,可以更新foo.php的路径)
<script src ="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script>
function WriteToFile()
{
var dataa = "foo bar";
$.post("foo.php", {data: dataa}, function(result){ alert("ciaoooo!!");}, "json");
}
</script>
答案 2 :(得分:0)
此时不要使用引号:
data: { 'data' : 'data'},
将其替换为:
data: {data : data},
此外,在第一个代码段中,您需要使用括号,如下所示进行更正:
if (isset($_POST['data'])) {
/* Your code here */
}
答案 3 :(得分:0)
我想你想要这样的东西:
function WriteToFile() {
var data = "foo bar";
$.ajax({
url: 'foo.php',
type: 'POST',
data: data,
success: function() {
alert('the data was successfully sent to the server');
}
});