我希望能够继续使用PHP知识。我现在最大的障碍是试图更好地理解AJAX类型的调用在PHP中的最佳使用方式。
我知道我可以做一个简单的Javascript类型的AJAX,我从例子中找到了......
var formdata = new FormData();
formdata.append("fileid", "somedata";
var ajax = new XMLHttpRequest();
ajax.open("POST", "Page.php");
ajax.send(formdata);
我想知道的是,做一个快速回复的最佳做法是等待从您的发布数据的网页回复?
例如,如果我的网页上有一个按钮可以[POST]一些数据,但是在接收页面上,它可能会在所有数据完成之前10到20秒。从逻辑上讲,我想要抛出一个" div"那说"加载"或"处理"直到页面完全完成。我不能只进行正常的POST,因为当前页面将等待并停留,直到它完全完成。
所以我想做一个AJAX类型的调用来发布数据,我假设使用上面的例子,然后一旦完成检查发回的数据的结果(或响应),然后决定从那里说什么"完成"或者"失败"等
最好的办法是什么?
答案 0 :(得分:2)
拥有一个带有JQuery的HTML页面,这将提交到下面的PHP页面并返回一个JSON有效负载,其中包含下一个HTML + JavaScript页面将用于查询另一个PHP页面的ID。
PHP将项目添加到队列
// please don't use this exactly as this isn't safe for SQL-injection
mysqli_query("INSERT INTO tasks (1,2,3,4,5,5,6,7,4,3,"this is data that was POST via the FORM using AJAX to this PHP page","incomplete")");
$id = mysqli_insert_id();
// create array to hold return values
$arr = array('id' => $id);
// return JSON to jquery
echo json_encode($arr);
PHP查询ID状态
$result = mysql_fetch_array("SELECT status FROM tasks WHERE id = " + $id, $connection);
if($result['status'] == 'complete') {
$arr = array('id' => $id, 'status' => $result['status'], 'payload' => $result);
}
else {
$arr = array('id' => $id, 'status' => $result);
}
echo json_encode($arr);
在HTML + JavaScript页面上,检查已完成的JSON有效负载状态...然后撤回所有数据
这是一个粗略的例子,但概念非常简单,您将数据插入到SQL表中。然后,您将创建一个服务/ CRON作业来处理此表并在处理完成时更改状态。
有关代码的内容比任何代码都要多,很明显有很多其他排队系统可以做到这一点。
答案 1 :(得分:0)
我为你做了一个简单的例子。请看一下,我认为它会帮助您理解
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input type="text" name="name" id="name" onchange="callajax(this.value)" /></td>
</tr>
<tr>
<td id="address">Show output here</td>
</tr>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
function callajax(s_id)
{
$.post("ajax.php", {id:s_id}, function(data){
$('#address').val(data);
});
}
</script>
//your ajax.php php page
<?php
echo "I am here ".$_POST['id'];
?>