2

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

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

4 回答 4

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); 

这解释了为什么你会得到 undefined $stringData,因为 POST 没有正确执行。

请注意,这并不能解决您的 JS / jQuery 问题。为此,请参阅其他答案。

于 2012-07-27T17:07:59.413 回答
2

好的,我认为这就是正在发生的事情:

您发布的代码(示例 1 中的 foo.php/file.js)是正确的,并且可以正常工作。我不确定您是否尝试直接在浏览器中点击 foo.php URL。在这种情况下,没有发布任何内容,因此 $stringData 将是未定义的,它会抛出您所看到的通知。

您需要做的是: 1. 在 HTML 文件中包含 file.js 脚本。2. 确保您已包含 jquery 库 3. 确保 $.POST 中的 PHP (foo.php) 文件路径正确 4. 在 HTML 正文 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>

于 2012-07-27T17:44:04.910 回答
0

此时不要使用引号:

data: { 'data' : 'data'},

将其替换为:

data: {data : data},

此外,在您需要括号的第一个代码片段中,像这样更正它:

if (isset($_POST['data'])) {
  /* Your code here */
}
于 2012-07-27T17:07:44.037 回答
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');
    }
});
于 2012-07-27T17:08:06.723 回答