使用json_encode从服务器返回多个数据

时间:2015-01-02 23:34:07

标签: php jquery json

我的代码有问题,使用jquery ajax执行php脚本并将数据返回给浏览器。我想从“回声”中返回更多一个值。我的PHP脚本的输出。所以我使用json_encode返回数组的数据通知。但是我的代码在这里没有返回任何值,也没有在我的浏览器中发生任何响应。这是我的代码。

// AJAX Code To Submit Form

// Get the value from selectbox
var so = $(this).find('option:selected').text();

var dataString = 'so1='+ so;

$.ajax({
    type: "POST",
    url: "functions/ajaxsubmit.php",
    data: dataString,
    cache: false,
    success: function(response){
        var pos1_text = $("#pos1").text(response.a);
    }
});

并且我的PHP代码 ajaxsubmit.php

<?php
include("connection.php");

//Fetching Values from URL
$sign1 = $_POST['so1'];

//Display Signing Position
$sql = "SELECT * FROM signing_officer WHERE signing_incharge = '$sign1'";
$result = mysql_query($sql);

while($row = mysql_fetch_array($result)) {
    $dbSigning_id = $row['signing_id']; 
    $dbSigning_position = $row['signing_position'];                                                 
}

$output = array('a' => $dbSigning_id, 'b' => $dbSigning_position);
echo json_encode($output, JSON_FORCE_OBJECT);

?>

任何人都可以帮我找到这段代码的错误吗?真的需要这个..谢谢你

2 个答案:

答案 0 :(得分:1)

虽然我同意@Aram Tchekrekjian的评论,但我认为错误在于jQuery,因为你的AJAX请求没有相应地接收JSON数据

实现目标的两种方法是(使用ajax函数):

$.ajax({
    type: "POST",
    url: "functions/ajaxsubmit.php",
    data: dataString,
    cache: false,
    success: function(response){
        var pos1_text = $("#pos1").text(response.a);
    },
    dataType: 'json'
});

或(通过使用post函数):

$.post("functions/ajaxsubmit.php", dataString, function(response){
    var pos1_text = $("#pos1").text(response.a);
}, 'json');

瞧!

此外,我的目标是@Aram Tchekrekjian,因为我觉得它完成了我的:

$dbSigning_ids = array();
$dbSigning_positions = array();
while($row = mysql_fetch_array($result)) {
    $dbSigning_ids[] = $row['signing_id']; 
    $dbSigning_positions[] = $row['signing_position'];                                                 
}

$dbSigning_array = array($dbSigning_ids,$dbSigning_positions);
echo json_encode($dbSigning_array);

Latter似乎解决了你的问题,但我也看到了jQuery实现中的错误。

干杯,

答案 1 :(得分:0)

您只返回获取数组中的最后一个元素,您需要为字段定义数组,然后将它们放入另一个容器数组中,然后通过json_encode回显它:

$dbSigning_ids = array();
$dbSigning_positions = array();
while($row = mysql_fetch_array($result)) {
    $dbSigning_ids[] = $row['signing_id']; 
    $dbSigning_positions[] = $row['signing_position'];                                                 
}

$dbSigning_array = array($dbSigning_ids,$dbSigning_positions);
echo json_encode($dbSigning_array);

另外,Brandon的评论非常重要,你需要从浏览器开发工具检查网络,看看你是否得到了json响应。