2

Angularは非常に新しいものです。現時点では調査中です。私がここでどこに絞るのかについてのポインタまたは2つに非常に感謝します-TIA

私がやりたいのは、mysql selectクエリからデータを取得し、jsonを使用してhtmlページに返し、角度を付けて表示することです。JSON_encodeを使用してデータを返すことに成功しました-jsonlintを介して実行し、問題なく戻ってきました。次に、テストのために、この文字列を取得してテキストファイルを作成し、Angularファイルを実行しました。これは正常に機能します。

phpファイルから直接データを呼び出すと失敗しますが、静的テキストファイル(phpデータと同じ出力のように見える)からデータを呼び出すと機能します。

エコーでデータを送信しています-これは正しいですか?

$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"}] 

コメントへの返信:

OK-私のコードであなたを退屈させないことを望んでいました。以下のような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)を使用するとページは正しく機能します。

4

2 に答える 2

1

まず、.then() から .success() および .error() に切り替えることをお勧めします。これにより、すべてがうまくいっているかどうかがわかります。

それ以外は、質問情報が不足しており、非常に一般的であるため、サーバーでのjsonの取得と構築の部分が問題であるに違いありません。 たぶん、このリンクが役立つでしょう

彼らがそれを取得する方法:

$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!

一般に、バックエンドでフレームワークを追加または切り替えるオプションがある場合は、php に symfony/django を使用するか、RABL/GON を使用して RoR に切り替えて json を生成することをお勧めします。とても簡単で直感的です。バニラphpを使用してからしばらく経ちました。

于 2013-01-15T18:43:44.917 に答える
0

.json ファイルで php を実行できないためです。clis.json は clis.php である必要があります。または、データを保持する別の json ファイルに php スクリプトを書き込むことができます。

于 2013-12-28T07:28:53.633 に答える