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


using json_encode to return multiple data from the server

我的代码在使用jquery ajax执行php脚本并将数据返回给浏览器时遇到了问题。我想从我的 php 脚本的"echo"输出中返回多个值。所以我使用 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);
?>

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

虽然我同意@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("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 实现中的错误。

干杯

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