未定义变量$ _POST ['data'] PHP / Ajax jquery

时间:2012-07-27 17:04:49

标签: php jquery ajax

大家好,这不正常:) !!

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???

4 个答案:

答案 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');
    }
});