我有一个服务器端PHP页面,它从SQL数据库中提取数据以填充PHP变量数组。我使用每个变量的最后一个数组值来最初将数据填充到表单的第3帧(即value =)。这个表格有一个"之前的"和" next"我想用来填充表格第3帧的链接" previous"或" next"动态集合变量值(即value =)而不加载整个页面。虽然我非常熟悉javascript,php和sql,但这是我第一次尝试使用AJAX。我试图做的是将数组编号或计数器(这是一个php变量)传递给AJAX函数,该函数增加或减少数组计数器(即$ counter),以便下一组变量的值出现在表格的第3帧中。我的问题是,我确定我可以将当前的$ counter值传递给AJAX函数,该函数将把它作为javascript变量处理,但是我怎样才能将结果传回来更新第3帧中的php变量形成?任何帮助将非常感谢。
Blacksquare:
我的php网页执行第一部分。它从底层SQL数据库收集数据并将其放入php数组中。当网页最初加载时,最近或最后一条记录用于使用类似这样的内容(value = $ dataField [$ counter])填充单个框架中的表单字段。这在最初加载页面时起作用,使用SQL数据库中最后一条记录的数据填充所有帧字段。我要做的是创建一个AJAX功能,通过点击" next"或"之前"获取$ counter值并将其增加或减少一(1)的链接(即onclick事件)然后刷新显示来自" next"或"之前" php数组记录在同一帧中,无需重新加载页面。
答案 0 :(得分:0)
你需要创建一个php文件来处理ajax请求(将变量作为post参数传递)并在php文件中回显你的响应。
然后在ajax文件中,您将获得成功响应,使用jQuery将响应更新到表单中。
注意:不要忘记在php文件中的响应之后放入'exit'。
例如:
$.post( "test.php", { counter: <?php echo $counter; ?>}).done(function( data ) { alert( "Data Loaded: " + data ); });
答案 1 :(得分:0)
在获得ajax调用的结果后,如何使用JavaScript更改适当的HTML元素?当您可以直接从JavaScript更改HTML值时,无需设置php变量,然后使用该字段在HTML中设置值。
答案 2 :(得分:0)
您无法将变量传递回由php生成的静态页面。可能最好的方法是仅在页面加载时加载表单。然后使用ajax调用服务器端的另一个php脚本来获取动态数据(我使用jQuery作为ajax)。
$.ajax({
type: "GET",
url: someURL, //A link to your php script that will load the data
dataType: "json" //Ask for json data from the server
}).done(function(data) {
nextRecords = data;
getNextRecord();
}).fail(function(resp) {
console.log("Something Went Wrong");
});
将你的sql逻辑移动到someURL访问的单独的php脚本,并让php传回一个像这样的json数据数组
$query = ...Your select query returning an array of results
echo json_encode($query);
exit;
现在,当用户点击下一个/上一个按钮时,您可以轻松获取最新记录而无需发布到服务器。
function getNextRecord() {
if (nextRecords.length > 0) {
var record = nextRecords.pop();
var node = document.getElementById(node_name);
node.innerHTML = record;
if (currentRecord){
prevRecords.push(currentRecord);
}
currentRecord = record;
}
}
function getPreviousRecord() {
if (prevRecords.length > 0) {
var record = prevRecords.pop();
var node = document.getElementById(node_name);
node.innerHTML = record;
if (currentRecord) {
nextRecords.push(currentRecord);
}
currentRecord = record;
}
}