【问题标题】:how to retrieve echo data from php to jquery 1 by 1如何从 php 到 jquery 1 by 1 检索回显数据
【发布时间】:2014-11-18 03:36:36
【问题描述】:

我有一个点击时的 JQuery,它向 MySql 发送一个 php 查询,然后我想在 JQuery 上一一发送数据。

但我只知道如何将结果从 php 发送回整个 JQuery。

我当前的 JQuery:

$(function() {
    $(".img_thumb_holder").on("click", function() {
        $.ajax({
        type: "POST",
        url: "CMS/PHP/retrieveAuthorDetails.php",
        success: function(data) {
                alert(data);
            }
        });
    });
});

我当前的 php:

<?php
include 'dbAuthen.php';
$sql = "SELECT * FROM users WHERE Name = 'james'";

$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{
    echo $row['UserID'];;
    echo $row['EmailAddr'];
}
?>

输出都是 UserID 和 EmailAddr,我不知道如何只显示 UserID 或 EmailAddr

我尝试了 alert(data[0]),但它只显示了结果的一个字母..关于如何做到这一点的任何想法?

更新:在肖恩的帮助下,我得到了当前更新的代码

jquery:

$(function() {
    $(".img_thumb_holder").on("click", function() {
        $.ajax({
        type: "POST",
        dataType: "json",
        url: "CMS/PHP/retrieveAuthorDetails.php",
        success: function(data) {
                $.each(data, function() {
                    var userid = data.userid;
                    var useremail = data.email;
                    // i think there something wrong with this as it will keep repeating storing the userid and email for each data.. can someone verify?
                });
            }
        });
    });
});

PHP

<?php
include 'dbAuthen.php';
$sql = "SELECT * FROM users WHERE Name = 'honwenhonwen'";

$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{
    $arr = array(
        "userid" => "HonWen",
        "email" => "honwen@hotmail.com"
    );
}

echo json_encode($arr);
?>

【问题讨论】:

  • 使用json_encode() 并回显。 Jquery 会将其作为对象接收。
  • 为什么不把你的结果保存在php中作为一个数组,然后json_ecode()这个数组,然后在你的$.ajax()成功中你可以循环遍历每个数组。
  • @sean 我实际上是新手,你能给我看一个简单的例子吗?我现在也去谷歌看看。

标签: javascript php jquery mysql


【解决方案1】:

在你的 php 中,将结果保存到一个数组中 -

<?php
include 'dbAuthen.php';
$array = array(); // create a blank array
$sql = "SELECT * FROM users WHERE Name = 'james'";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{
    // add each result to the array
    $array[] = array('UserID'=> $row['UserID'], 'EmailAddr'=> $row['EmailAddr']);
}

echo json_encode($array); // json_encode() the array
?>

然后在你的 js/ajax 中你可以遍历每个值

$(function() {
    $(".img_thumb_holder").on("click", function() {
        $.ajax({
          type: "POST",
          url: "CMS/PHP/retrieveAuthorDetails.php",
          success: function(data) {
            // loop through each returned value
            $.each(data, function(){
                  //alert each result, this is just an example as alert() for each result is not a great idea
                  alert("UserID:"+ this.UserID + " EmailAddr:" + this.EmailAddr);
            });
          }
        });
    });
});

【讨论】:

  • 我认为您应该使用$.each(data, func) 而不是将一堆数据传递给$() 函数本身。这是用于 DOM 操作的。
  • 我实际上在你回答之前就做到了,你能告诉我我做得对吗?
【解决方案2】:

jquery

$(function() {
        $(".img_thumb_holder").on("click", function() {
            $.ajax({
            type: "POST",
            dataType: "json",
            url: "CMS/PHP/retrieveAuthorDetails.php",
            success: function(data) {
                    $.each(data, function() {
                        var userid = data.userid;
                        var useremail = data.email;
                        // i think there something wrong with this as it will keep repeating storing the userid and email for each data.. can someone verify?
                    });
                }
            });
        });
    });

php

<?php
include 'dbAuthen.php';
$sql = "SELECT * FROM users WHERE Name = 'honwenhonwen'";

$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{
    $arr = array(
        "userid" => "HonWen",
        "email" => "honwen@hotmail.com"
    );
}

echo json_encode($arr);
?>

【讨论】:

  • 这是您的答案,还是您的尝试?如果只是你的尝试,你应该用这个编辑你的问题,而不是作为答案发布。如果这是您的答案,则存在一些问题。
  • (1) 在您的 php 中,将 $arr = array("userid" =&gt; "HonWen","email" =&gt; "honwen@hotmail.com"); 更改为 $arr[] = array("userid" =&gt; $row['UserID'],"email" =&gt; $row['EmailAddr']);。 (2) 在您的$.ajax({ success: }) 中,您需要对您的var useridvar useremail 做一些事情。您可以提醒他们,或append() 他们注意div 或其他元素,等等。
  • 是的,只是一次尝试。会做
  • @sean 如果我只想将 php 的结果存储到 jquery 中的变量,如果我使用 each 函数,它将继续重复每个循环的存储。我该如何解决?存储的变量是供以后使用的,或者可以让它在每个循环中重复存储。
  • @sean haha​​ 是的,我刚刚想通了 =P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2020-09-26
  • 1970-01-01
相关资源
最近更新 更多