我之前从未真正使用过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);
?>
当我点击链接时,我收到成功消息,但该文件未在服务器上创建。不确定要调查什么。已确认我已对该目录进行写访问
答案 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脚本具有打开和写入服务器上文件的权限。