提交表单时从php加载动态内容
Load dynamic content from php on submitting a form
我创建了一个包含大量div的页面"index.php",提交表单时只需要刷新其中一个div。
这个div从chat_window.php加载内容,如下所示:
<div id="chatbox">
<?php echo $res; ?>
</div>
<!-- Chat user input form-->
<?php echo $formchat; ?>
chat_window.php使用chat.php中的动态内容$res
和$formchat
。每次我发布表单时,$res和$formchat的内容都会被修改,我需要在加载chat_window.php的页面中反映出来。
我使用AJAX和jQuery做了如下操作:
$(document).ready(function() {
$("#submit").click(function() {
var name = $("input#chat").val();
var dataString = "chat="+ name;
$.ajax({
type: "POST",
url: "programo/bot/chat.php",
data: dataString,
success: function() {
}
});
$("#chatwrapper").load(chat_window.php);
return false;
});
});
index.php有一个div来显示chat_window,如下所示:
<!-- Chat window-->
<div id="chatwrapper">
<?php include ("chat_window.php"); ?>
</div>
根据我的分析,当我发布表单时,$res和$formchat在php中得到了更新。但是当我加载chat_window.php时,它不会加载修改后的值。它加载初始静态值。(请不要建议setInterval()
,因为我不想自动刷新页面)。
Javascript是非阻塞的,因此这意味着解释器不需要等待作业完成才能处理下一个作业。
在您的代码中,$("#chatwrapper").load('chat_window.php');
几乎在上面的ajax请求完成之前就被调用了。您需要使用ajax成功事件来调用重载。
尝试:
$.ajax({
type: "POST",
url: "programo/bot/chat.php",
data: dataString,
success: function() {
$("#chatwrapper").load('chat_window.php');
}
});
尝试将.load()
语句移动到ajax成功处理程序中:
$.ajax({
type: "POST",
url: "programo/bot/chat.php",
data: dataString,
success: function() {
$("#chatwrapper").load("chat_window.php");
}
});
$.ajax()
调用是异步的,这意味着执行不会暂停等待响应,而是直接转到.load()
调用。(这也是异步的,所以实际上你不能保证每次调用的响应顺序,除非你在第一次调用完成之前不进行第二次调用。)
我完成了我的工作。尽管我用了另一种方法。
经过几天的R&D是指,当我们将表单提交到php时,请求将与输入params一起发送。当php文件处理这个请求时,它可能正在更新一些全局变量。它完成了对请求的处理,并将控件返回到调用的index.php页面。
需要注意的重要事项是:在处理表单提交请求时进行的变量更新在返回控件后不会持续。全局php变量只有在页面刷新时才会更新。
因此,如果有严格的要求来避免页面刷新,请在一些输出字符串中从php收集处理后的数据,并将其传递回index.php,如下所示:
$responseString = $res . "|" . $formchat;
echo $responseString;
.ajax的成功参数将接收此输出,因此您可以更新聊天窗口或任何其他形式。
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 如何根据对具有多行的先前列表的选择来动态加载下拉列表
- 动态加载和卸载js文件
- 动态加载angularjs并生成控制器和范围
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 动态加载fancybox并将其连接
- 对插件初始化后动态加载的元素进行样式设置
- 动态加载的自定义javascript/jQuery/HTML5音频播放器的问题
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- 使用jquery垂直对齐动态加载的图像
- 在动态加载的对话框中执行Javascript
- angularjs-bindng-click从jquery动态加载DOM
- 在动态加载的html中使用角度控制器
- 如何使用Javascript在FireFox中将html从内存动态加载到iframe中
- 使用systemJS的相对动态加载,使用ES6/Babel语法
- 为什么动态加载的事件在我的代码中不能正常工作
- 在不同的域上动态加载样式表;不适用于Firefox
- 在动态加载的PHP表单上放置JavaScript事件
- 在混合基本 URL 下动态加载 require.js 模块
- 动态加载引导模式主体