也许我不像我想的那样聪明但是我真的遇到了aJax和PHP相互交互的问题。我正在尝试制作一种保存方法。
这是我的PHP。我唯一的猜测是我没有检查正确的事情。
(这是一个名为edit.php的页面)
<?php
if(isset($_POST['text']) && isset($_GET['dir'])){
$File = $_POST['location'];
$Handle = fopen($File, 'w') or die("can't open file");
$Data = $_POST['text'];
fwrite($Handle, $Data);
fclose($Handle);
}
?>
<input type="text" value="<?=$_GET['dir'];?>" id="saveValue">
这是我按Ctrl and S
function saveFile(){
var data = new FormData();
data.append('text', e.getSession().getValue());
data.append('location',$('#saveValue').val());
var url = $('#saveValue').val();
var split = url.split('/public_html');
alert(split[1]);
var url = "edit.php?dir="+split[1];
$.ajax({
url: url,
type: "post",
data: data,
success: function (data, textStatus, jqXHR) {
if (data == "false") {
console.log("There is a problem on the server, please try again later");
} else {
//Do something with what is returned
console.log("failed");
}
}
});
};
我认为我要么选错了,要么我没有提交我认为的我。 我可以得到一些帮助或者至少对此有所澄清。
我已经读过,我需要使用$_REQUEST['text']
代替$_POST
,但两者都没有效果。
答案 0 :(得分:0)
IMO您试图混淆两种请求类型GET
以及POST
。
在AJAX
调用中,您指定的网址不包含dir
参数,因此条件isset($_POST['text']) && isset($_GET['dir'])
失败。
您不能拥有edit.php?dir=foo
因为您可以使用GET
或POST`
您的服务器端脚本具有if()
条件,以检查POST
参数。正如@Marcel Gwerder所建议的那样,它就像if(isset($_POST['text']) && isset($_POST['location']))
很乐意提供帮助。
答案 1 :(得分:0)
我修复了我的代码错误。这就是我现在拥有的。
function getDir(){
var url = $('#saveValue').val();
var split = url.split('/public_html');
return split[1];
};
function saveFile(){
var datas = {
'text': e.getValue(),
'location':$('#saveValue').val()
};
$.ajax({
url: "edit.php",
type: 'POST',
data: datas,
success: function (data, textStatus, xhr) {
errorReport(datas.toString());
}
});
};
function errorReport(data){
var msg = document.createElement('p');
msg.className = "msg";
msg.innerHTML = data
$('.error').append(msg);
$('.msg').fadeIn('slow');
setTimeout(function(){
$('.msg').fadeOut("slow");
$('.msg').remove();
},9500);
};
对于我所拥有的一点点PHP,我现在有了这个。 据我所知,我没有通过表格发送正确的对象。
if(isset($_POST['text']) && isset($_POST['location'])){
$File = $_POST['location'];
$Handle = fopen($File, 'w') or die("can't open file");
$Data = $_POST['text'];
fwrite($Handle, $Data);
fclose($Handle);
}
答案 2 :(得分:0)
使用带Ajax的POST请求时,需要设置一些标头
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
这个标题让php想到作为表单提交提交的数据。现在,相应的数据可以在php中处理为普通的$ _POST []变量。