使用 json_encode 到 return 来自服务器的多个数据

using json_encode to return multiple data from the server

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

// 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);

?>

谁能帮我找出这段代码的错误?真的需要这个.. 谢谢

您只返回获取的数组中的最后一个元素,您需要为字段定义数组,然后将它们放入另一个 容器 数组中,然后通过 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 响应。

虽然我同意@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);

后者似乎解决了您的问题,但我也看到了 jQuery 实施中的错误。

干杯,