【问题标题】:Handling Data with Jquery and Php使用 Jquery 和 Php 处理数据
【发布时间】:2014-07-04 16:14:48
【问题描述】:

我正在构建一个 Web 应用程序。在我的应用中,如果用户单击带有两个输入的搜索按钮

.....必须显示一个三列的表格,如图所示。

为了实现这一点,我正在使用 jQuery 和 php。当我运行查询,检索值并将数组作为 php 中的 json 对象发送时,会出现问题。 jquery 中解析的 JSON(在控制台屏幕中)为

[{"Name":"Dinesh", "Case_Status":"Open"}]
[{"Name":"Dinesh", "Case_Status":"Open"},{"Name":"Greg", "Case_Status":"Open"}]    [{"Name":"Dinesh", "Case_Status":"Open"},{"Name":"Greg", "Case_Status":"Open"},{"Name":"Sulshekharan", "Case_Status":"Open"}]
[{"Name":"Dinesh", "Case_Status":"Open"},{"Name":"Greg", "Case_Status":"Open"},{"Name":"Sulshekharan", "Case_Status":"Open"},{"Name":"Peter", "Case_Status":"Close"}]

我已经在 while 循环中回显了数组,所以它的显示如上..

$Update = array();
$Query = "Select.....";
$result = mysql_query($Query,$link);
while($row = mysql_fetch_assoc($result)or die(mysql_error()))
{
    $Update[] = array('Name' => $row['Name'], 
               'Case_Status' => $row['Case_Status'], 
                'Walk_in_ID' => $row['Walk_in_ID']);    
    echo json_encode($Update);  
}

使用上面的代码,我得到了以下错误

 [{"Name":"P.Amulya Wilson ","Case_Status":"Open","Walk_in_ID":"2"}]
 [{"Name":"P.Amulya Wilson ","Case_Status":"Open","Walk_in_ID":"2"},
 {"Name":"P.Amulya Wilson","Case_Status":"Open","Walk_in_ID":"6"}] 
 SCRIPT1002: Syntax error 
 WalkinUpdate.js, line 52 character 3 
 (this line 52 is --> var response = JSON.parse(data);)

我也尝试了下面的代码,但它什么也没返回 ($Update = "")

$Update = array();
$Query = "Select.....";
$result = mysql_query($Query,$link);
while($row = mysql_fetch_assoc($result)or die(mysql_error()))
{
    $Update[] = array('Name' => $row['Name'], 
               'Case_Status' => $row['Case_Status'], 
                'Walk_in_ID' => $row['Walk_in_ID']);        
}
 echo json_encode($Update);

使用上面的代码,控制台如下图所示:

在上网google和搜索之后,我也尝试了下面的代码,但没有用

while($row = mysql_fetch_assoc($result)or die(mysql_error()))
{
    $Update[] = array('Name' => $row['Name'], 
         'Case_Status' => $row['Case_Status'], 
         'Walk_in_ID' => $row['Walk_in_ID']);   
    $superUpdate = json_encode($Update[sizeof($Update) - 1]);   
    echo $superUpdate;      
}

我也试过 mysql_fetch_array 但没用。 jQuery部分如下代码

$(document).on('submit', '#Update_Form', function(event)
{
    event.preventDefault();

    var Update = {};

    Update.EmployeeType = $("#employeeType").val(),
    Update.EmployeeID = $("#employeeID").val();
    console.log(Update);        
    $.post("php/walkin_data_update.php", Update, function(data)
    {
        console.log(data);
        var response = JSON.parse(data);
        console.log(response);
        console.log(response.length);
        $("#fieldset3").show();
        $("#UpdateForm2").show();
        for(var i=0;i<response.length;i++)
        {
            var j= 1;
            var Name = response[i].Name;
            var Status = response[i].Case_Status;
            $('#statusTable tr').last().after('<tr>
               <td id="statusName'+j+'">'+Name+'</td>
               <td id="statusCase'+j+'">'+Status+'</td>
               <td><button id="View'+j+'">View</button></tr>');
            count++;
            j++;
        }
    });
});

如果我使用console.dir而不是console.log,它会显示如下截图:

这是我第一次在这种情况下使用 jquery-ajax-php-json。请指导我,如何使用 jquery 在 html 中显示这样的 json 数据,我该怎么做?对不起我的英语,如果它无法理解。提前谢谢你。

【问题讨论】:

  • 我对您在哪里发现错误感到困惑。您的 while 循环输出看起来不错,但后来您说您发现 $Output 是一个空字符串。它是一个数组,所以我看不出它怎么会是一个空字符串。
  • 如果您的问题是在 javascript/JSON 解析中,向我们展示 console.log 输出也会很有帮助。数据是否完全来自php?如果没有,请尝试在您的 json_encode 之后输出 json_last_error() 并查看 json 是否在抱怨。
  • @islanddave 非常感谢您的回复。我已经编辑了我的问题,请看一次并指导我。
  • 我认为在定义数组时不需要方括号。尝试$Update = array(...) 而不是$Update[] = array(...)。虽然我认为这不是问题所在,但值得一试。
  • @Jordan 需要括号将嵌套数组添加到 $Update,这部分很好。

标签: php jquery ajax json arrayobject


【解决方案1】:

经过几个痛苦的小时后,我终于自己弄清楚了,我只需要更改下面的 php 代码,现在它工作正常。

while(($row = mysql_fetch_assoc($result))!== FALSE)
{
    $Update[] = array('Name' => $row['Name'], 
       'Case_Status' => $row['Case_Status'], 
       'Walk_in_ID' => $row['Walk_in_ID']);                 
}
echo json_encode($Update);

感谢 @islanddave 帮助我实现这一目标。

【讨论】:

    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多