[英]Save Data to File via Ajax POST and PHP
我只想在服务器上的文件中保存一些JSON(使用Javascript生成)。 但我甚至不能使用简单的字符串:
HTML文件:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<style>
#test{
padding:20px 50px;
background:#ccc;
color:#000;
}
</style>
<script>
$(function(){
$('#test').click(function(){
$.ajax({
url: "page.php",
data: {"foo": "bar"},
processData: false,
contentType: 'application/json'
});
});
});
</script>
</head>
<body>
<div id="test">
KLICK
</div>
</body>
</html>
而php文件是这样的:
<?php
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w');
fwrite($fh,$_POST['data']);
fwrite($fh,$_POST['foo']);
fwrite($fh,$_POST["foo"]);
fwrite($fh,$_POST[foo]);
fclose($fh);
没有任何效果。 我也试过了
$.ajax({
var datatosend="foo bar";
url: "page.php",
data: datatosend,
processData: false
});
我不知道会出现什么问题。 单击html文件中的div后,txt文件就在那里。 但文件中没有内容。 如果我只是将$ _POST写入文本文件,该文件包含Text“Array”,这意味着$ _POST有一些内容。
这里几乎没有什么可能出错的。 检查您尝试写入的目录的权限。 还要确保您的ajax调用正在使用POST方法。
$.ajax({
url: "page.php",
type : 'POST',
...
});
正如jQuery文档中所述,type参数设置请求类型POST或GET。
要求的类型(“POST”或“GET”),默认为“GET”。
另一件需要考虑的事情是你实际上并没有编写JSON数据。 数据以该格式发送,但当它到达$_POST
变量时,它已被转换为数组。 你应该尝试做的是将PHP数组写入文件 -
$fh = fopen($myFile, 'w');
fwrite($fh,'<?php $arr='.var_export($_POST['data'],true).' ?>');
fclose($fh);
这应该给出一个类似于此的文件 -
<?php
$arr = array(
'foo'=>'bar'
)
?>
如您所见, var_export()
函数返回变量的可解析版本。
var_export - 输出或返回变量的可解析字符串表示形式
您需要进行POST
呼叫,请参阅以下内容:
$('#test').click(function(){
$.ajax({
url: "page.php",
type : 'post',
data: {"foo": "bar"},
processData: false,
contentType: 'application/json'
});
});
默认情况下,所有$ .ajax()请求都是使用GET方法发送的,而不是POST。 您需要将类型指定为“POST”:
$.ajax({
var datatosend="foo bar";
url: "page.php",
type: 'post',
data: datatosend,
processData: false
});
从文档:
type - String
默认值:'GET'
要求的类型(“POST”或“GET”),默认为“GET”。 注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们。
可能是应该的
$.ajax({
url: "page.php",
type: "POST", // add this
data: {"foo": "bar"},
processData: false,
contentType: 'application/json'
});
要么
在PHP中使用$_REQUEST
而不是$_POST
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.