通过Ajax传递Php变量来更新帧

时间:2015-02-07 20:54:31

标签: php sql ajax

我有一个服务器端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数组记录在同一帧中,无需重新加载页面。

3 个答案:

答案 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;   
    }
}
相关问题