使用ajax写入文件

时间:2016-05-11 15:57:26

标签: php ajax

我之前从未真正使用过AJAX,所以我试图熟悉它。我有一个HTML页面:

<html>
<script type="text/javascript" src="jquery-1.12.3.min.js"></script>

<script>
    function write(){
        $.ajax({
        type: 'POST',
        url: "write.php",
        data: "something",
        success: function(result) {
            alert('the data was successfully sent to the server');
        }
        })
    }
</script>

Click to write some stuff
<a href="javascript:write()" class="write">Write</a>
</html>

相关目录中的关联write.php文件:

<?php
error_reporting(E_ALL);
$data = $_POST['data'];
$f = fopen('file.txt', 'w+');
fwrite($f, $data);
fclose($f);
?>

当我点击链接时,我收到成功消息,但该文件未在服务器上创建。不确定要调查什么。已确认我已对该目录进行写访问

1 个答案:

答案 0 :(得分:3)

看,如果你打算使用jQuery,那么一直使用它。首先,您的链接不应包含任何内联JavaScript。

<a href="#" class="write">Write</a>

单击时,您可以通过其类捕获主jQuery代码中的链接事件的单击(并停止单击的默认行为):

<script>
    $(document).on('click', '.write', function(event) {
        event.preventDefault();

由于$_POST数组需要键/值对,因此您不会将您认为发送的内容发送到PHP脚本。为您的数据创建一个键/值对:

        $.ajax({
        type: 'POST',
        url: "write.php",
        data: {something: 'foo'}, // key value pair created, 'something' is the key, 'foo' is the value

Don't use alert() for troubleshooting.,请改用console.log()

            success: function(result) {
                console.log('the data was successfully sent to the server');
            }
        });
    });
</script>

现在,当您发送数据时,您会在$_POST['something']中找到一些内容:

<?php
    error_reporting(E_ALL);
    $data = $_POST['something']; // the key we sent was "something"
    $f = fopen('file.txt', 'w+');
    fwrite($f, $data);
    fclose($f);
?>

现在文本文件应该包含“foo”,因为您实际上已经向PHP脚本发送了一些可以解析的内容。您需要做的唯一事情是确保PHP脚本具有打开和写入服务器上文件的权限。