使用 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 实施中的错误。
干杯,
我使用 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 实施中的错误。
干杯,