1

我试图在进行 ajax 调用后填充一个元素,但我不太确定这是否是正确的方法,如果是,我哪里出错了。

这是我的代码...

$(document).ready( function() {
    $("#edit_delete").click(function() {
        $.post('mySelect.php', $("#edit_delete").serialize(), function(result) {
            $('#message1').html(<?php echo $myTest; ?>);
            $('#message2').html(<?php echo $myOtherTest; ?>);
        });
    }   
});

mySelect.php :

<?php include '../../includes/connection.php' ?>
<?php
    $selected_user = $_POST["users"];
    $result = mysql_query("SELECT * FROM users WHERE id = $selected_user");
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
?>
<?php $myTest = $row['id']; ?>
<?php $myOtherTest = $row['name']; ?>
<?php mysql_close($con); ?>

(如果您需要更多信息,请告诉我,请随时编辑我的问题,这样才有意义!)

4

5 回答 5

3

在您进行 AJAX 调用后,PHP 脚本的整个输出将(在您的情况下)放置在回调的“结果”参数中。

这意味着如果您echo 'Hello!';在 mySelect.php 中,结果将包含字符串 'Hello!'。

如果你想提醒结果,那么你所要做的就是:alert(results);在你的回调中。

正如其他几个人指出的那样,您还可以查看使用json_encoded数组来帮助您更好地利用从服务器发回的数据。

于 2012-04-17T14:07:56.257 回答
1

不,您应该将数据回显给客户端,然后使用它

<?php include '../../includes/connection.php' ?>
<?php
    $selected_user = $_POST["users"];
    $result = mysql_query("SELECT * FROM users WHERE id = $selected_user");
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
//prepare an array to return
$return = array();
$return['id'] = $row['id']; 
$return['name'] = $row['name']; 
//set the header
header('application/json');
//encode it and echo it back
echo json_encode($return);

进而

   $.post('mySelect.php', $("#edit_delete").serialize(), function(result) {
        $('#message1').html(result.id);
        $('#message2').html(result.name);
    });

您这样做是因为您正在对服务器进行异步调用:您无需重新加载页面,您只需进行调用并取回一些数据

于 2012-04-17T14:08:28.003 回答
1

结果的工作方式是发送应用程序的整个输出。所以变量不会按预期工作。

相反,您想要做的是 echo json_encode (javascript object notation ),如下所示:

<?php
  echo json_encode(array('myTest' => $row['id'], 'myOtherTest' => $row['name']));
?>

然后你可以通过以下方式调用它:

来自 ajax 回调的 results.myTest

于 2012-04-17T14:08:34.177 回答
1

在我看来,您应该避免在 $.post 函数的回调中使用 php。你可以使用 ajax 做所有你想做的事。

Javascript代码:

$(document).ready( function() {
    $("#edit_delete").click(function() {
    $.ajax({
            type: "POST",
            url: "mySelect.php",   
            data: 'users='+$("#edit_delete").serialize(),
            success: function(data) {
            var result = $.parseJSON(data);    
                $('#message1').html(result.id);
                $('#message2').html(result.name);
            }
       });          
    }   
});

PHP代码:

<?php 
include '../../includes/connection.php';

$selected_user = $_POST["users"];
$result = mysql_query("SELECT * FROM users WHERE id = $selected_user");
$row = mysql_fetch_array($result, MYSQL_ASSOC);

$return = array(
'id' => $row['id'],
'name' => $row['name']
);

mysql_close($con);

echo json_encode($return);
?>

尽量避免在每一行中打开和关闭 php 标签。一个在 fila 的开头和一个在它的结尾就足够了。

对不起我的英语不好。

祝你好运

于 2012-04-17T14:24:31.437 回答
0

你应该看看jQuery 手册

有一个使用 JSON 的例子

$.post("test.php", { "func": "getNameAndTime" },
 function(data){
   console.log(data.name); // John
   console.log(data.time); //  2pm
 }, "json");

在您提供的有关 Javascript 变量的代码中,结果将由您回显的任何内容填充。

于 2012-04-17T14:09:56.433 回答