从ajax调用填充警报消息

时间:2012-04-17 14:04:53

标签: php jquery ajax post

我正在尝试在进行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); ?>

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

5 个答案:

答案 0 :(得分:3)

进行AJAX调用后,PHP脚本的整个输出(在您的情况下)放在回调的'results'参数内。

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

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

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

答案 1 :(得分: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);
    });

您执行此操作是因为您正在对服务器进行异步调用:您不会重新加载页面,只需拨打电话并获取一些数据

答案 2 :(得分:1)

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

相反,你想做的是回复json_encode(javascript对象表示法),如:

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

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

results.myTest来自ajax回调

答案 3 :(得分: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标记。它足够了一个在丝的前端和一个在它的末端。

抱歉我的英文不好。

祝你好运

答案 4 :(得分:0)

您应该查看jQuery manual

有一个使用JSON的例子

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

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