天天看點

AngularJS SQL

在前面章節中的代碼也可以用于讀取資料庫中的資料。

<div ng-app="myApp" ng-controller="customersCtrl">

<table>

  <tr

ng-repeat="x in names">

    <td>{{ x.Name }}</td>

    <td>{{ x.Country

}}</td>

  </tr>

</table>

</div>

<script>

var app = angular.module('myApp', []);

app.controller('customersCtrl',

function($scope, $http) {

    $http.get("https://www.runoob.com/try/angularjs/data/Customers_MySQL.php")

.success(function (response) {$scope.names = response.records;});

});

</script>

    $http.get("https://www.runoob.com/try/angularjs/data/Customers_SQL.aspx")

    .success(function (response) {$scope.names = response.records;});

以下列出了幾種服務端代碼類型:

使用 PHP 和 MySQL。傳回 JSON。

使用 PHP 和 MS Access。傳回 JSON。

使用 ASP.NET, VB, 及 MS Access。 傳回 JSON。

使用 ASP.NET, Razor, 及 SQL Lite。 傳回 JSON。

如果你需要從不同的伺服器(不同域名)上擷取資料就需要使用跨域 HTTP 請求。

跨域請求在網頁上非常常見。很多網頁從不同伺服器上載入 CSS, 圖檔,Js腳本等。

在現代浏覽器中,為了資料的安全,所有請求被嚴格限制在同一域名下,如果需要調用不同站點的資料,需要通過跨域來解決。

以下的 PHP 代碼運作使用的網站進行跨域通路。

header("Access-Control-Allow-Origin: *");

更多跨域通路解決方案可參閱:PHP Ajax 跨域問題最佳解決方案。

<?php

header("Content-Type:

application/json; charset=UTF-8");

$conn =

new mysqli("myServer", "myUser", "myPassword", "Northwind");

$result = $conn->query("SELECT

CompanyName, City, Country FROM Customers");

$outp = "";

while($rs = $result->fetch_array(MYSQLI_ASSOC)) {

if ($outp != "") {$outp .= ",";}

    $outp .= '{"Name":"'  . $rs["CompanyName"] . '",';

    $outp .= '"City":"'   . $rs["City"]        . '",';

    $outp .= '"Country":"'. $rs["Country"]     . '"}';

}

$outp ='{"records":['.$outp.']}';

$conn->close();

echo($outp);

?>

application/json; charset=ISO-8859-1");

$conn = new COM("ADODB.Connection");

$conn->open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb");

$rs = $conn->execute("SELECT CompanyName, City, Country FROM

Customers");

while (!$rs->EOF) {

    $rs->MoveNext();

echo ($outp);

<%@ Import Namespace="System.IO"%>

<%@ Import Namespace="System.Data"%>

<%@ Import Namespace="System.Data.OleDb"%>

<%

Response.AppendHeader("Access-Control-Allow-Origin", "*")

Response.AppendHeader("Content-type", "application/json")

Dim conn As

OleDbConnection

Dim objAdapter As OleDbDataAdapter

Dim objTable As

DataTable

Dim objRow As DataRow

Dim objDataSet As New DataSet()

Dim outp

Dim c

conn = New OledbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data

source=Northwind.mdb")

objAdapter = New OledbDataAdapter("SELECT

CompanyName, City, Country FROM Customers", conn)

objAdapter.Fill(objDataSet,

"myTable")

objTable=objDataSet.Tables("myTable")

outp = ""

c = chr(34)

for each x in objTable.Rows

if outp <> "" then outp = outp & ","

outp = outp & "{" & c & "Name"    & c & ":" & c & x("CompanyName")

& c & ","

outp = outp &       c & "City"    & c & ":" & c

& x("City")        & c & ","

outp = outp &       c & "Country" & c

& ":" & c & x("Country")     & c & "}"

next

outp

="{" & c & "records" & c & ":[" & outp & "]}"

response.write(outp)

conn.close

%>

@{

var db =

Database.Open("Northwind");

var query = db.Query("SELECT CompanyName,

City, Country FROM Customers");

var outp =""

var c = chr(34)

@foreach(var row in

query)

{

if outp <> "" then outp = outp + ","

outp = outp + "{" + c + "Name"    + c + ":" + c

+ @row.CompanyName + c + ","

outp = outp +       c

+ "City"    + c + ":" + c

+ @row.City        + c + ","

outp = outp

+       c + "Country" + c

+ ":" + c + @row.Country     + c + "}"

outp ="{" + c

+ "records" + c + ":[" + outp + "]}"

@outp