我有一个php脚本,它接受一些用户表单输入,并根据该输入将一些文件打包成zip文件。问题是,有时服务器会出错,因此所有表单数据都会丢失。有人告诉我可以使用ajax,这样用户甚至不必更改页面。我从来没有使用过ajax,没有任何ajax经验的人很难访问http://api.jquery.com/jQuery.ajax/。
页面说您可以接受ajax调用的返回。如何在PHP文件中为ajax调用设置返回值?如果服务器在ajax调用时出错,我怎么知道呢?
编辑:此外,是否有一种方法来发送一个ajax请求与javascript和jquery,如果它是一个提交的表单?
如何在PHP文件中设置返回值
只是在ajax页面中echo它将作为响应返回
简单教程
client.php
$.post('server.php',({parm:"1"}) function(data) {
$('.result').html(data);
});
server.php
<?php
echo $_POST['parm'];
?>
结果为1
编辑OP注释是否有办法使用ajax,如果你是提交一个表单
有
- 你可以使用jQuery form等插件
- 使用提交
- 如果你使用jquery验证插件,你可以使用提交处理程序选项
$('#form').submit(function() {
//your ajax call
return false;
});
每个ajax函数都有一个函数参数来处理服务器返回。大多数都有参数msg,这是来自服务器的消息。服务器页面,例如PHP页面,您可以使用echo something将信息返回给ajax函数。下面是一个示例
$.ajax({
url:yoururl,
type:post,
data:yourdata,
success:function(msg){
//here is the function dealing with infomation form server.
}
});
通过AJAX从PHP到JavaScript获取信息的最简单方法是使用json_encode()
将任何PHP数据编码为JSON。
<?php
try {
// process $_POST data
// zip files, etc
echo json_encode(array('status' => true));
} catch (Exception $e) {
$data = array(
'status' => false,
'message' => $e->getMessage()
);
echo json_encode($data);
}
然后,你的jQuery代码可能看起来像这样
$('form').submit(function() {
var data = $(this).serialize();
$.ajax(this.action, {
data: data,
type: 'POST',
dataType: 'json',
success: function(data, textStatus, jqXHR) {
if (!data.status) {
alert(data.message);
return;
}
// otherwise, everything worked ok
},
error: error(jqXHR, textStatus, errorThrown) {
// handle HTTP errors here
}
});
return false;
});