非常新的棱角分明 - 此刻正在探索。非常感谢指针或两个关于我在这里拧的地方 - TIA
我想要做的是从mysql select查询中获取数据并将其返回到html页面,使用json然后使用angular来显示它。 成功使用JSON_encode返回数据 - 通过jsonlint运行它并且它已经恢复正常。为了测试,我接着这个字符串并创建了一个文本文件,并通过角度文件运行 - 它工作正常。
如果我直接从php文件调用数据它会失败,但是如果我从静态文本文件中调用数据(看起来与php数据的输出相同),它就可以工作。
我用echo发送数据 - 这是正确的吗?
$json=json_encode($main_arr);
echo $json;
json输出:
[{"custcode":"CMZIG001","cli":"0020\/1"},{"custcode":"CMZIG002","cli":"0020\/2"},{"custcode":"CMZIG003","cli":"0020\/3"},{"custcode":"999","cli":"002871365801"},{"custcode":"CMSLE001","cli":"0030"},{"custcode":"CMNIC001","cli":"0034"},{"custcode":"CMLIF001","cli":"0047"},{"custcode":"CMTON01101","cli":"0087\/1"},{"custcode":"CMTON01102","cli":"0087\/2"},{"custcode":"CMTRE001","cli":"0090"}]
文本文件内容:
[{"custcode":"CMZIG001","cli":"0020\/1"},{"custcode":"CMZIG002","cli":"0020\/2"},{"custcode":"CMZIG003","cli":"0020\/3"},{"custcode":"999","cli":"002871365801"},{"custcode":"CMSLE001","cli":"0030"},{"custcode":"CMNIC001","cli":"0034"},{"custcode":"CMLIF001","cli":"0047"},{"custcode":"CMTON01101","cli":"0087\/1"},{"custcode":"CMTON01102","cli":"0087\/2"},{"custcode":"CMTRE001","cli":"0090"}]
回应评论:
好的 - 我原本希望不要厌恶我的代码。一个html文件如下(我将尝试正确格式化)
<!doctype html>
<html ng-app="App">
<head>
<meta charset="utf-8">
<title>CLIs http</title>
<link rel="stylesheet" href="style.css">
<script>document.write("<base href=\"" + document.location + "\" />");</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.js">
</script>
<script src="app.js"></script>
</head>
<body ng-controller="TodoCtrl">
<ul>
<li ng-repeat="cli in cli">
{{cli.custcode}} - <em>{{cli.cli}}</em>
</li>
</ul>
</body>
</html>
app.js - 目前设置为在我的服务器上调用php文件
var App = angular.module('App', []);
App.controller('TodoCtrl', function($scope, $http) {
$http.get('http://localhost/t5/clis.json')
//$http.get('njs.json')
.then(function(res){
$scope.cli = res.data;
});
});
clis.json(我服务器上的php文件)
$con = mysql_connect("localhost","root","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$db='mutuxf';
mysql_select_db($db, $con);
$result = mysql_query("SELECT custcode, cli FROM clis limit 10");
while($row = mysql_fetch_assoc($result))
{
foreach($row as $key => $value)
{ $arr[$key] = $value; }
$main_arr[] = $arr;
}
$json=json_encode($main_arr);
echo $json;
?>
当我使用php文件来提升数据时,我只是得到一个没有文本的项目符号列表,但是当我使用文本文件(njs.json)时,页面正常工作。
答案 0 :(得分:1)
首先,我建议从.then()切换到.success()和.error(),这样你就知道一切进展顺利。
除此之外,由于问题信息缺乏且相当普遍,我敢打赌,服务器上的json获取和构建部分是问题所在。 maybe this link would help
他们获取它的方式:
$data = file_get_contents("php://input");
$objData = json_decode($data);
注意评论,这可能是关键:
// The request is a JSON request.
// We must read the input.
// $_POST or $_GET will not work!
一般情况下 - 如果您可以选择在后端添加或切换框架,我建议使用symfony / django for php或使用RABL / GON切换到RoR以生成jsons。它更加简单直观。 希望它有所帮助,因为我使用了vanilla php已经有一段时间了。
答案 1 :(得分:0)
这是因为你不能在.json文件中运行php,clis.json需要是clis.php,或者你可以让php脚本写入一个单独的json文件,它将保存数据