Return JSON 后 MS SQL 服务器查询
Return JSON after MS SQL Server query
我正在尝试 return MS SQL 服务器查询的结果作为 JSON 对象。
查询是正确的,我用echo $row ['name']
也能看到结果,但是用echo json_encode ( $arr )
我没有得到任何结果。该页面仍然是空的。
这是我的代码:
$sql = "SELECT * FROM tab1";
$stmt = sqlsrv_query ( $conn, $sql );
if ($stmt === false) {
die ( print_r ( sqlsrv_errors (), true ) );
}
$arr = array ();
while ( $row = sqlsrv_fetch_array ( $stmt ) ) {
// echo $row ['name'] . "\n"; // <- this works
array_push ( $arr, $row );
}
echo json_encode ( $arr );
sqlsrv_free_stmt ( $stmt );
sqlsrv_close ( $conn );
header ( "Content-type: application/json; charset=utf-8" );
die ( json_encode ( $arr ) );
exit ();
将页眉放在 json_encode 之前。
header ( "Content-type: application/json;" );
echo json_encode ( $arr );
Returning JSON from a PHP Script
接收页面示例报错。在 AJAX 的 jQuery 脚本中,我将包含这样的控制台错误报告:
.fail(function( jqxhr, textStatus, error ) {
console.log(arguments);
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});
要在浏览器中查看该控制台,我经常在 Chrome 中使用 "Developer Tools" windows 或类似的东西。这对于调试通信中的基本错误非常有用。如果您处于未返回预期内容的情况,这种向控制台报告的类型会有所帮助。 JSON 和 Javascript 一样挑剔。它通常会突然陷入沉默。
同样,要显示返回的成功数据,您可以通过通用警报框进行报告:
success: function (data){
alert(data+" was received.");
},
var_dump arr 和 运行 页面本身;将该结果与 JSON 中的成功和失败进行比较。使用这些类型的成功和失败例程,您应该查看是否返回空白页以及返回什么内容。
我注意到的另一个变化是我通常只以 echo json 编码行结尾;也许就此结束,除非您对最后一位建立了一些流量控制并将其放在自己的块中。
Header 必须发送到输出。检查安装的扩展(需要 php5-json)。
启用错误报告:
error_reporting(E_ALL);
好的,我终于想通了。问题是 table.
中的特殊字符
只需将 characterSet
添加到 connectionInfo
帮助:
$connectionInfo = array (
"Database" => "myDB",
"CharacterSet" => "UTF-8"
);
我正在尝试 return MS SQL 服务器查询的结果作为 JSON 对象。
查询是正确的,我用echo $row ['name']
也能看到结果,但是用echo json_encode ( $arr )
我没有得到任何结果。该页面仍然是空的。
这是我的代码:
$sql = "SELECT * FROM tab1";
$stmt = sqlsrv_query ( $conn, $sql );
if ($stmt === false) {
die ( print_r ( sqlsrv_errors (), true ) );
}
$arr = array ();
while ( $row = sqlsrv_fetch_array ( $stmt ) ) {
// echo $row ['name'] . "\n"; // <- this works
array_push ( $arr, $row );
}
echo json_encode ( $arr );
sqlsrv_free_stmt ( $stmt );
sqlsrv_close ( $conn );
header ( "Content-type: application/json; charset=utf-8" );
die ( json_encode ( $arr ) );
exit ();
将页眉放在 json_encode 之前。
header ( "Content-type: application/json;" );
echo json_encode ( $arr );
Returning JSON from a PHP Script
接收页面示例报错。在 AJAX 的 jQuery 脚本中,我将包含这样的控制台错误报告:
.fail(function( jqxhr, textStatus, error ) {
console.log(arguments);
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});
要在浏览器中查看该控制台,我经常在 Chrome 中使用 "Developer Tools" windows 或类似的东西。这对于调试通信中的基本错误非常有用。如果您处于未返回预期内容的情况,这种向控制台报告的类型会有所帮助。 JSON 和 Javascript 一样挑剔。它通常会突然陷入沉默。
同样,要显示返回的成功数据,您可以通过通用警报框进行报告:
success: function (data){
alert(data+" was received.");
},
var_dump arr 和 运行 页面本身;将该结果与 JSON 中的成功和失败进行比较。使用这些类型的成功和失败例程,您应该查看是否返回空白页以及返回什么内容。
我注意到的另一个变化是我通常只以 echo json 编码行结尾;也许就此结束,除非您对最后一位建立了一些流量控制并将其放在自己的块中。
Header 必须发送到输出。检查安装的扩展(需要 php5-json)。 启用错误报告:
error_reporting(E_ALL);
好的,我终于想通了。问题是 table.
中的特殊字符只需将 characterSet
添加到 connectionInfo
帮助:
$connectionInfo = array (
"Database" => "myDB",
"CharacterSet" => "UTF-8"
);