【问题标题】:Populate alert message from ajax call从 ajax 调用填充警报消息
【发布时间】:2012-04-28 21:13:57
【问题描述】:

我试图在 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); ?>

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

【问题讨论】:

    标签: php jquery ajax post


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      <?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);
          });
      

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

      【讨论】:

        【解决方案3】:

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

        相反,您想要通过以下方式回显 json_encode(javascript 对象表示法):

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

        那么就可以通过:

        来自 ajax 回调的results.myTest

        【讨论】:

          【解决方案4】:

          你应该看看jQuery manual

          有一个使用JSON的例子

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

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

          【讨论】:

            【解决方案5】:

            在我看来,您应该避免在 $.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 的开头和一个在它的结尾就足够了。

            对不起,我的英语不好。

            祝你好运

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-12-21
              • 2016-02-22
              • 1970-01-01
              • 2019-05-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-07-18
              相关资源
              最近更新 更多