中文字幕人妻中文_99精品欧美一区二区三区综合在线_精品久久久久一区二区_色月丁香_免费福利在线视频_欧美大片免费观看网址_国产伦精品一区二区三区在线播放_污污污污污污www网站免费_久久月本道色综合久久_色69激情爱久久_尹人香蕉久久99天天拍_国产美女www_亚洲国产精品无码7777一线_五月婷婷六月激情_看免费一级片_精品久久久久久成人av_在线色亚洲_女人另类性混交zo_国产精品青青在线观看爽香蕉_人人澡人人添人人爽一区二区

主頁 > 知識庫 > Ajax與JSON的一些學(xué)習(xí)總結(jié)

Ajax與JSON的一些學(xué)習(xí)總結(jié)

熱門標簽:察縣地圖標注 辦理一個400電話多少錢 電銷機器人適用范圍 莆田防封電銷卡價格 蓄意標記地圖標注 如何用地圖標注各分公司 廣西ai語音電銷機器人哪家好 信貸電銷機器人有用嗎 接聽電話機器人哪有
1.1.1 摘要
Ajax技術(shù)的核心是XMLHttpRequest對象(簡稱XHR),可以通過使用XHR對象獲取到服務(wù)器的數(shù)據(jù),然后再通過DOM將數(shù)據(jù)插入到頁面中呈現(xiàn)。雖然名字中包含XML,但Ajax通訊與數(shù)據(jù)格式無關(guān),所以我們的數(shù)據(jù)格式可以是XML或JSON等格式。

XMLHttpRequest對象用于在后臺與服務(wù)器交換數(shù)據(jù),具體作用如下:

在不重新加載頁面的情況下更新網(wǎng)頁
在頁面已加載后從服務(wù)器請求數(shù)據(jù)
在頁面已加載后從服務(wù)器接收數(shù)據(jù)
在后臺向服務(wù)器發(fā)送數(shù)據(jù)

1.1.2 正文
XMLHttpRequest是一個JavaScript對象,它是由微軟設(shè)計,并且被Mozilla、Apple和Google采納,W3C正在標準化它。它提供了一種簡單的方法來檢索URL中的數(shù)據(jù)。

我們要創(chuàng)建一個XMLHttpRequest實例,只需new一個就OK了:
復(fù)制代碼 代碼如下:

//// Creates a XMLHttpRequest object.
var req = new XMLHttpRequest();

也許有人會說:“這可不行啊!IE6不支持原始的XHR對象”,確實是這樣,我們在后面將會介紹支持IE6或更老版本創(chuàng)建XHR對象的方法。

XMLHttpRequest的用法
在創(chuàng)建XHR對象后,接著我們要調(diào)用一個初始化方法open(),它接受五個參數(shù)具體定義如下:
復(fù)制代碼 代碼如下:

void open(
DOMString method, //"GET", "POST", "PUT", "DELETE"
DOMString url,
optional boolean async,
optional DOMString user,
optional DOMString password
);

通過上面的定義我們知道open()方法的簽名包含五個參數(shù),其中有參數(shù)method和url地址是必填的,假設(shè)我們針對URL: myxhrtest.aspx發(fā)送GET請求獲取數(shù)據(jù),具體定義如下:
復(fù)制代碼 代碼如下:

var req = new XMLHttpRequest();
req.open(
"GET",
"myxhrtest.aspx",
false
);

通過上述代碼會啟動一個針對myxhrtest.aspx的GET請求,這里有兩點要注意:一是URL相對于執(zhí)行代碼的當前頁面(使用絕對路徑);二是調(diào)用open()方法并不會真正發(fā)送請求,而只是啟動一個請求準備發(fā)送。

只能向同一個域中使用相同端口和協(xié)議的URL中發(fā)送請求;如果URL與啟動請求的頁面有任何差別,都會引發(fā)安全錯誤。

要真正發(fā)送請求要使用send()方法,send()方法接受一個參數(shù),即要作為請求主體發(fā)送的數(shù)據(jù),如果不需要通過請求主體發(fā)送數(shù)據(jù),我們必須傳遞一個null值。在調(diào)用send()之后,請求就會被分派到服務(wù)器,完整Ajax請求代碼如下:
復(fù)制代碼 代碼如下:

var req = new XMLHttpRequest();
req.open(
"GET",
"myxhrtest.aspx",
false
);
req.send(null);

在發(fā)送請求之后,我們需要檢查請求是否執(zhí)行成功,首先可以通過status屬性判斷,一般來說,可以將HTTP狀態(tài)代碼為200作為成功標志。這時,響應(yīng)主體內(nèi)容會保存到responseText中。此外,狀態(tài)代碼為304表示請求的資源并沒有被修改,可以直接使用瀏覽器緩存的數(shù)據(jù),Ajax的同步請求代碼如下:
復(fù)制代碼 代碼如下:

if (req != null) {
req.onreadystatechange = function() {
if ((req.status >= 200 req.status 300) || req.status == 304) {
//// Do something.
}
else {
alert("Request was unsuccessful: " + req.status);
}
};
req.open("GET", "www.myxhrtest.aspx", true);
req.send(null);
}

前面我們定義了Ajax的同步請求,如果我們發(fā)送異步請求,那么在請求過程中javascript代碼會繼續(xù)執(zhí)行,這時可以通過readyState屬性判斷請求的狀態(tài),當readyState = 4時,表示收到全部響應(yīng)數(shù)據(jù),屬性值的定義如下:

readyState值

描述

0

未初始化;尚未調(diào)用open()方法

1

啟動;尚未調(diào)用send()方法

2

已發(fā)送;但尚未收到響應(yīng)

3

接收;已經(jīng)收到部分響應(yīng)數(shù)據(jù)

4

完成;收到全部響應(yīng)數(shù)據(jù)

表1 readyState屬性值

同步請求:發(fā)生請求后,要等待服務(wù)器執(zhí)行完畢才繼續(xù)執(zhí)行當前代碼。

異步請求:發(fā)生請求后,無需等到服務(wù)器執(zhí)行完畢,可以繼續(xù)執(zhí)行當前代碼。

現(xiàn)在我們要增加判斷readyState屬性值,當readyState = 4時,表示全部數(shù)據(jù)接收完成, 所以Ajax的異步請求代碼如下:
復(fù)制代碼 代碼如下:

if (req != null) {
req.onreadystatechange = function() {

//// Checks the asyn request completed or not.
if (req.readyState == 4) {
if ((req.status >= 200 req.status 300) || req.status == 304) {
//// Do something.
}
else {
alert("Request was unsuccessful: " + req.status);
}
}
};
req.open("GET", "www.myxhrtest.aspx", true);
req.send(null);
}

Ajax同源請求
現(xiàn)在我們對Ajax的請求實現(xiàn)有了初步的了解,接下來我們將通過具體的例子說明Ajax請求的應(yīng)用場合和局限。

在日常網(wǎng)絡(luò)生活中,我們在瀏覽器的地址中輸入要訪問的URL并且回車,瀏覽器會向服務(wù)器發(fā)送請求,當服務(wù)器收到請求后,把相應(yīng)的請求頁面發(fā)送回瀏覽器,我們會發(fā)現(xiàn)頁面大部分加載完畢,有些還沒有加載完畢。總得來說,采用異步加載方式不會影響已加載完畢的頁面瀏覽,我們可以通過Ajax實現(xiàn)異步加載。

這里我們以AdventureWorks數(shù)據(jù)庫為例,把產(chǎn)品表(Product)中的數(shù)據(jù)通過報表呈現(xiàn)給用戶,我們可以通過多種方法實現(xiàn)該報表需求,這里我們將通過Ajax實現(xiàn)該功能。

首先,我們要把后臺數(shù)據(jù)轉(zhuǎn)換為JSON格式,接下來我們定義Product表的數(shù)據(jù)庫訪問對象(DAO),具體的實現(xiàn)代碼如下:
復(fù)制代碼 代碼如下:

/// summary>
/// The product datatable dao.
/// /summary>
public class ProductDao
{
/// summary>
/// Initializes a new instance of the see cref="ProductDao"/> class.
/// /summary>
public ProductDao()
{
}

/// summary>
/// Gets or sets the product id.
/// /summary>
public int Id { get; set; }

/// summary>
/// Gets or sets the product name.
/// /summary>
public string Name { get; set; }

/// summary>
/// Gets or sets the product serial number.
/// /summary>
public string SerialNumber { get; set; }

/// summary>
/// Gets or sets the product qty.
/// /summary>
public short Qty { get; set; }
}

前面我們定義了Product表的數(shù)據(jù)庫訪問對象——ProductDao,它包含四個屬性分別是產(chǎn)品的Id,名稱,序列號和銷售數(shù)量。

接下來,讓我們實現(xiàn)Product表的數(shù)據(jù)庫操作類。
復(fù)制代碼 代碼如下:

/// summary>
/// Product table data access manager.
/// /summary>
public class ProductManager
{
/// summary>
/// The query sql.
/// /summary>
private const string Query =
"SELECT ProductID, Name, ProductNumber, SafetyStockLevel FROM Production.Product";

/// summary>
/// Stores the object of see cref="ProductDao"/> into list.
/// /summary>
private IListProductDao> _products = new ListProductDao>();

/// summary>
/// Gets all products in product table.
/// /summary>
/// returns>
/// The list of see cref="ProductDao"/> object.
/// /returns>
public IListProductDao> GetAllProducts()
{
using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLCONN"].ToString()))
using (var com = new SqlCommand(Query, con))
{
con.Open();
using (var reader = com.ExecuteReader(CommandBehavior.CloseConnection))
{
while (reader.Read())
{
var product = new ProductDao
{
Id = (int)reader["ProductID"],
Name = (string)reader["Name"],
SerialNumber = (string)reader["ProductNumber"],
Qty = (short)reader["SafetyStockLevel"]
};
_products.Add(product);
}
}
}

return _products;
}
}

前面我們實現(xiàn)了Product表的數(shù)據(jù)庫操作類——ProductManager,它包含兩個私有字段Quey和_products,還有一個獲取Product表中數(shù)據(jù)的方法——GetAllProducts()。

通過實現(xiàn)ProductDao和ProductManager,而且我們提供GetAllProducts()方法,獲取Product表中的數(shù)據(jù),接下來我們要調(diào)用該方法獲取數(shù)據(jù)。

為了使數(shù)據(jù)通過JSON格式傳遞給頁面,這里我們要創(chuàng)建一般處理程序(ASHX文件),

一般處理程序適用場合:

創(chuàng)建動態(tài)圖片
返回REST風(fēng)格的XML或JSON數(shù)據(jù)
自定義HTML

圖1一般處理程序

把一般處理程序文件添加到項目中時,會添加一個擴展名為.ashx的文件,現(xiàn)在我們創(chuàng)建一個一般處理程序ProductInfo,具體代碼如下:

復(fù)制代碼 代碼如下:

%@ WebHandler Language="C#" Class="ProductInfo" %>
using System.Runtime.Serialization.Json;
using System.Web;
using ASP.App_Code;
/// summary>
/// The product data handler.
/// /summary>
public class ProductInfo : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/json";
// Creates a see cref="ProductManager"/> oject.
var manager = new ProductManager();
// Invokes the GetAllProducts method.
var products = manager.GetAllProducts();
// Serializes data to json format.
var json = new DataContractJsonSerializer(products.GetType());
json.WriteObject(context.Response.OutputStream, products);
}
// Whether can resuable by other handler or not.
public bool IsReusable {
get {
return false;
}
}
}

大家注意到ProductInfo類實現(xiàn)了IHttpHandler接口,該接口包含一個方法ProcessRequest()方法和一個屬性IsReusable。ProcessRequest()方法用于處理入站的Http請求。在默認情況下,ProductInfo類會把內(nèi)容類型改為application/json,然后我們把數(shù)據(jù)通過JSON格式寫入輸入流中;IsReusable屬性表示相同的處理程序是否可以用于多個請求,這里我們設(shè)置為false,如果為了提高性能也可以設(shè)置為true。
如下圖所示,我們通過ProductInfo類成功地實現(xiàn)獲取數(shù)據(jù)到響應(yīng)流中,并且以JSON格式顯示出來。

圖2 Http請求
當我們請求ProductInfo時, 首先它會調(diào)用ProcessRequest()方法,接著調(diào)用GetAllProducts()方法從數(shù)據(jù)庫中獲取數(shù)據(jù),然后把數(shù)據(jù)通過JSON格式寫入到響應(yīng)流中。
現(xiàn)在,我們已經(jīng)成功地把數(shù)據(jù)通過JSON格式寫入到響應(yīng)流當中,接著我們將通過Ajax方式請求數(shù)據(jù)并且把數(shù)據(jù)顯示到頁面中。
首先,我們定義方法createXHR()用來創(chuàng)建XMLHttpRequest對象,前面我們提到IE6或者更老的版本不支持XMLHttpRequest()方法來創(chuàng)建XMLHttpRequest對象,所以我們要在createXHR()方法中,增加判斷當前瀏覽器是否IE6或更老的版本,如果是,就要通過MSXML庫的一個ActiveX對象實現(xiàn)。因此,在IE中可能遇到三種不同版本的XHR對象(MSXML2.XMLHttp6.0,MSXML2.XMLHttp3.0和MSXML2.XMLHttp)。
復(fù)制代碼 代碼如下:

// Creates a XMLHttpRequest object bases on web broswer.
function createXHR() {
// Checks whether support XMLHttpRequest or not.
if (typeof XMLHttpRequest != "undefined") {
return new XMLHttpRequest();
}
// IE6 and elder version.
else if (typeof ActiveXObject != "undefined") {
if (typeof arguments.callee.activeXString != "string") {
var versions = [
"MSXML2.XMLHttp6.0",
"MSXML2.XMLHttp3.0",
"MSXML2.XMLHttp"];
for (var i = 0; i versions.length; i++) {
try {
var xhr = new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
return xhr;
}
catch (ex) {
throw new Error(ex.toString());
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
else {
throw new Error("No XHR object available");
}
}
return null;
}
$(document).ready(function() {
GetDataFromServer();
});

前面我們定義了一個比較通用的方法用來創(chuàng)建XMLHttpRequest對象,并且它支持IE6或更老版本創(chuàng)建XMLHttpRequest對象,接下來我們將通過Ajax方法請求數(shù)據(jù)。
復(fù)制代碼 代碼如下:

function GetDataFromServer() {
// Creates a XMLHttpRequest object.
var req = new createXHR();
if (req != null) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
if ((req.status >= 200 req.status 300) || req.status == 304) {
////alert(req.responseText);
var jsonTextDiv = document.getElementById("jsonText");
// Deserializes JavaScript Object Notation (JSON) text to produce a JavaScript value.
var data = JSON.parse(req.responseText);
for (var i = 0; i data.length; i++) {
var item = data[i];
var div = document.createElement("div");
div.setAttribute("class", "dataItem");
// Inserts data into the html.
div.innerHTML = item.Name + " sold " + item.Qty + "; Product number: " + item.SerialNumber;
jsonTextDiv.appendChild(div);
}
}
else {
alert("Request was unsuccessful: " + req.status);
}
}
};
// Sends a asyn request.
req.open("GET", "ProductInfo.ashx", true);
req.send(null);
}
}

由于前面我們介紹過Ajax發(fā)生請求的方法,所以不再重復(fù)介紹了,但我們注意到GetDataFromServer()方法中,獲取responseText數(shù)據(jù)(JSON格式),然后通過parse()方法把JSON格式數(shù)據(jù)轉(zhuǎn)換為Javascript對象,最后把數(shù)據(jù)插入到div中,頁面呈現(xiàn)效果如下:

圖3 Ajax請求結(jié)果

現(xiàn)在,我們成功地把數(shù)據(jù)輸出到頁面當中,也許用戶還會覺得用戶體驗不好,那么我們給就該頁面增加CSS樣式。

由于時間的關(guān)系,我們已經(jīng)把CSS樣式定義好了,具體如下:
復(fù)制代碼 代碼如下:

#header {
width: 100%;
margin-left: 10px;
margin-right: 10px;
background-color:#480082;
color: #FFFFFF;
}
body {
margin-left: 40px;
margin-right: 40px;
}
div#jsonText {
background-color: #d9d9d9;
-webkit-border-radius: 6px;
border-radius: 6px;
margin: 10px 0px 0px 0px;
padding: 0px;
border: 1px solid #d9d9d9;
}
div.dataItem {
font-family: Verdana, Helvetica, sans-serif;
color: #434343;
padding: 10px;
}
div.dataItem:nth-child(2n) {
background-color: #fafafa;
}
div.dataItem:first-child {
-webkit-border-top-left-radius: 6px;
-webkit-border-top-right-radius: 6px;
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
div.dataItem:last-child {
-webkit-border-bottom-left-radius: 6px;
-webkit-border-bottom-right-radius: 6px;
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
}

我們刷新一下頁面,OK現(xiàn)在頁面效果好多了。

圖4 Ajax請求結(jié)果

同源策略與跨源策略
上面我們獲取頁面和數(shù)據(jù)都是在同源請求情況下,也就是說,客戶端瀏覽器請求的頁面和數(shù)據(jù)都是屬于同一域名、同一端口和同協(xié)議。

同源策略:阻止從一個域上加載的腳本獲取或操作另一個域上的文檔屬性。也就是說,受到請求的URL的域必須與當前Web頁面的域相同、相同端口。這意味著瀏覽器隔離來自不同源的內(nèi)容,以防止它們之間的操作。



圖5同源請求過程

在一些情況下,我們不可以避免地要地需要從其他域名或服務(wù)器中跨域請求數(shù)據(jù),但前面提到Ajax只能向同一個域中使用相同端口和協(xié)議的URL中發(fā)送請求;如果URL與啟動請求的頁面有任何差別,都會引發(fā)安全錯誤。

跨源策略(CORS):是一個Web瀏覽器技術(shù)規(guī)范,它定義了一個方法讓W(xué)eb服務(wù)器允許其他域名頁面訪問它的資源。跨源策略定義了一個方法讓瀏覽器和服務(wù)器可以交互決定是否允許跨源請求。

圖6跨源請求過程

大家注意到同源請求中我們使用的是JSON格式,但在跨源請求中卻是使用JSONP,這時大家可能有點困惑,坦然我剛開始學(xué)習(xí)的時候也是這樣的。

首先我們必須理解JSON和JSONP的區(qū)別:JSON是一種數(shù)據(jù)格式,而JSONP像是通過一個方法名來封裝JSON格式;由于瀏覽器允許跨源請求script>資源,如我們的HTML頁面代碼中使用了Google的jQuery庫,當我們Web程序發(fā)送跨源請求后,服務(wù)器給我們提供響應(yīng)數(shù)據(jù),但服務(wù)器無法預(yù)知接受JSON數(shù)據(jù)的方法名,所以我們要提供一個方法名。

Ajax跨源請求
跨域請求數(shù)據(jù)解決方案主要有如下解決方法:

JSONP方式
表單POST方式
服務(wù)器代理
Html5的XDomainRequest
Flash request
在介紹JSONP方式解決跨域請求數(shù)據(jù)之前,首先我們看看JSONP的定義。

JSONP(JSON with Padding)是一個非官方的協(xié)議,它允許在服務(wù)器端集成Script tags返回至客戶端,通過Javascript callback的形式實現(xiàn)跨域訪問(這僅僅是JSONP簡單的實現(xiàn)形式)。

由于同源策略的限制,XMLHttpRequest只允許請求當前源(域名、協(xié)議、端口)的資源,為了實現(xiàn)跨域請求,可以通過script標簽實現(xiàn)跨域請求,然后在服務(wù)端輸出JSON數(shù)據(jù)并執(zhí)行回調(diào)函數(shù),從而解決了跨域的數(shù)據(jù)請求。

假設(shè)博客園提供一個API接口:http://www.cnblogs.com/hotblogs/json?,供開發(fā)者調(diào)用獲取熱門博文。

這里我們可以通過兩種方式調(diào)用該接口:

1. 用Javascript定義回調(diào)函數(shù)
其實,通過Javascript定義回調(diào)函數(shù)調(diào)用該接口比較直觀,我們只需告訴服務(wù)器接收數(shù)據(jù)的方法名就OK了,比如:

http://www.cnblogs.com/hotblogs/json? callback=myFunction

其中myFunction是我們在頁面自定義的函數(shù)用來接收服務(wù)器回傳的數(shù)據(jù),myFunction的定義如下:
復(fù)制代碼 代碼如下:

// The call back function.
function myFunction(data) {
// Your code here.
}

2. 使用jQuery的Ajax方法
假設(shè)我們想在博客中增加顯示浪微博的公共微博信息,我們可以在博客中調(diào)用微博提供的API獲取跨源數(shù)據(jù),接下來,我們將使用jQuery的Ajax方法獲取跨域數(shù)據(jù)。

首先,查看微博API文檔找到了公共微博的API接口statuses/public_timeline 獲取最新的公共微博消息,它支持JSON或XML格式數(shù)據(jù)。

參數(shù)

必選

類型及范圍

說明

source

true

string

申請應(yīng)用時分配的AppKey,調(diào)用接口時候代表應(yīng)用的唯一身份。(采用OAuth授權(quán)方式不需要此參數(shù))

count

false

int,缺省值20,最大值200

每次返回的記錄數(shù)

count

false

int,缺省值20,最大值200

每次返回的記錄數(shù)

表2請求參數(shù)

上面的請求參數(shù)只有source(AppKey)是必須的,所以我們需要向微博申請AppKey,在調(diào)用API時,只需把我們的AppKey傳遞給接口就OK了。

接下來讓我們看一下微博數(shù)據(jù)組成,這里我們使用JSON viewer查看微博的數(shù)據(jù)組成,具體數(shù)據(jù)如下:

圖7微博JSON數(shù)據(jù)

通過上圖,我們知道微博的數(shù)據(jù)信息很豐富,它是由一些基礎(chǔ)數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型user組成的,接下來我們將使用jQuery實現(xiàn)調(diào)用微博接口方法。
首先,我們定義一個全局的對象,它包含三個屬性分別是:numWeibo、appendTo和appKey,還有三個方法loadWeibo()、timeAgo()和clean(),具體定義如下:
復(fù)制代碼 代碼如下:

JQWeibo = {
// The number of weibos display in the page.
// Sets the number of weibos, append class and app key.
numWeibo: 15,
appendTo: '#jsWeibo',
// The appkey you apply from weibo.
appKey: YourAppKey,
// The function to get weibo data.
loadWeibo: function() {
},
/**
* Convert the time to relative time.
* @return {string} relative time like "8 minutes ago"
*/
timeAgo: function(dateString) {
},
ify: {
clean: function(weibo) {
return this.hash(this.at(this.list(this.link(weibo))));
}
} // ify
};

上面我們定義了一個對象JQWeibo,其中l(wèi)oadWeibo()方法使用jQuery的Ajax方法向微博API發(fā)送跨源請求,接下來讓我們實現(xiàn)該方法吧。
復(fù)制代碼 代碼如下:

// The function to get weibo data.
loadWeibo: function() {
$.ajax({
// Weibo API.
url: "http://api.t.sina.com.cn/statuses/public_timeline.json",
type: "GET",
dataType: "jsonp",
data: {
source: JQWeibo.appKey,
count: JQWeibo.numWeibo
},
// When the requet completed, then invokes success function.
success: function(data, textStatus, xhr) {
// Sets html structure.
var html =
'div class="weibo">' +
'a target="_blank">USER/a>' +
':WEIBO_TEXTdiv class="time">AGO/div>';
// Appends weibos into html page.
for (var i = 0; i data.length; i++) {
$(JQWeibo.appendTo).append(
html.replace('WEIBO_TEXT', JQWeibo.ify.clean(data[i].text))
// Uses regex and declare DOMAIN as global, if found replace all.
.replace(/DOMAIN/g, data[i].user.domain)
.replace(/USER/g, data[i].user.screen_name)
.replace('AGO', JQWeibo.timeAgo(data[i].created_at))
);
}
}
})
}

現(xiàn)在,我們使用$.ajax()方法向微博API發(fā)送跨源請求,而且我們向API傳遞了JQWeibo.appKey和JQWeibo.numWeibo,當請求完成后,調(diào)用Success()方法把JSON數(shù)據(jù)插入的頁面當中。
頁面的HTML代碼如下:
復(fù)制代碼 代碼如下:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
html>
head>
meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
title>Weibo Feed/title>
script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js">/script>
link rel="stylesheet" type="text/css" href="css/WeiboFeed.css">
/head>
body>
div id="jsWeibo">/div>
/body>
/html>


圖8 跨源數(shù)據(jù)
如上圖所示,我們使用$.ajax()方法調(diào)用公共微博接口,當成功獲取服務(wù)器回調(diào)數(shù)據(jù)插入到我們的頁面當中。
1.1.3 總結(jié)
本文主要介紹了Ajax在同源請求適用性,但在跨源請求中其存在的局限性,進而介紹Ajax和JSONP在跨源請求下解決方法。
回答qianlifeng關(guān)于跨源請求的幾個問題:
1.一般的跨源不用jsonp請求為什么會報錯?和同源的不都是一個請求么?(可能對ajax了解不深)
答:首先跨源請求的解決方法不僅僅有JSON,本文中提及了其他方法,如:表單POST方式、服務(wù)器代理、Html5的XDomainRequest和Flash request等;而你提到報錯,我覺得你首先要確認數(shù)據(jù)格式是否正確。關(guān)于跨原請求和同源請求本文已經(jīng)給出了介紹。
2.關(guān)于“用Javascript定義回調(diào)函數(shù)”那塊看的不是很明白。傳遞當前頁面的一個js方法給跨源服務(wù)器,為什么就能跨源請求了呢?(JSONP?) 服務(wù)端根據(jù)這個js方法做了什么操作啊?
答:首先我們理解JSON是一種數(shù)據(jù)格式,而JSONP像似通過一個方法名來封裝JSON格式;而跨源請求不是說指定一個回調(diào)函數(shù)實現(xiàn)的,而是我們利用了瀏覽器允許跨源請求script>資源,你也可以我的HTML代碼中使用的是Google提供的jQuery庫,這也說明了script>資源可以跨源請求。當我們發(fā)送跨源請求后,服務(wù)器會返回JSONP,但服務(wù)器無法預(yù)知接受JSON數(shù)據(jù)的方法名,所有我們要把函數(shù)名告訴(傳遞)服務(wù)器。
復(fù)制代碼 代碼如下:

//JSON
{"name":"JK_Rush","id":23}
//JSONP
func({"name":"JK_Rush","id":23});

3.看你新浪微博的那個例子,是jquery的ajax對跨源做了處理?能不能說說您提到的兩種跨源方式的區(qū)別或者不同的應(yīng)用場景,還是隨便都一樣?
答:是通過$.ajax()方法實現(xiàn)的,如果你想使用動態(tài)Javascript實現(xiàn)也可以;至于兩種跨源的區(qū)別已經(jīng)在博文中指出了。
回答@On the road....關(guān)于JSON反序列化為對象的實現(xiàn):
答:一般我們可以通過三種方法把JSON數(shù)據(jù)反序列化為對象,分別是:ASP.NET AJAX中引入的JavaScriptSerializer,WCF中引入的DataContractJsonSerializer,以及Json.NET。
假設(shè),我們獲取到員工信息(employee)的JSON數(shù)據(jù),它包含兩個屬性分別是id和復(fù)雜屬性name,具體如下所示:
復(fù)制代碼 代碼如下:

[
{
"id": "82105",
"name": {
"lastName": "Huang",
"firstName": "JK"
}
},
{
"id": "82106",
"name": {
"lastName": "Leung",
"firstName": "Cindy"
}
}
]
string data = "[{\"id\":\"82105\",\"fullname\":{\"lastName\":\"Huang\",\"firstName\":\"JK\"}}," +
"{\"id\":\"82106\",\"fullname\":{\"lastName\":\"Leung\",\"firstName\":\"Cindy\"}}]";

根據(jù)上述JSON數(shù)據(jù)的組成,我們定義出相應(yīng)的對象模型,具體定義如下:
復(fù)制代碼 代碼如下:

// The Employee model.
public class Employee
{
public int Id { get; set; }
public Name FullName { get; set; }
}
// The Name model.
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

接下來,我們將介紹使用JavaScriptSerializer,Json.NET和DataContractJsonSerializer反序列化JSON數(shù)據(jù)為對象。
JavaScriptSerializer
復(fù)制代碼 代碼如下:

var serializer = new JavaScriptSerializer();
var employees= serializer.DeserializeEmployee[]>(data);Json.NET
using (var stringReader = new StringReader(data))
using (var jsonTextReader = new JsonTextReader(stringReader))
{
var serializer = new JsonSerializer();
var employees = serializer.DeserializeEmployee[]>(jsonTextReader);
}

DataContractJsonSerializer
對于使用WCF的DataContractJsonSerializer方法,我們需要在對象模型添加DataContract和DataMember屬性,具體定義如下:
復(fù)制代碼 代碼如下:

[DataContract]
public class Employee
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "fullname")]
public Name FullName { get; set; }
}
[DataContract]
public class Name
{
[DataMember(Name = "firstName")]
public string FirstName { get; set; }
[DataMember(Name = "lastName")]
public string LastName { get; set; }
}

接著我們使用ReadObjects()方法把JSON數(shù)據(jù)轉(zhuǎn)換為對象。
復(fù)制代碼 代碼如下:

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(data)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ListEmployee>));
var employee = (ListEmployee>)serializer.ReadObject(ms);
}


參考 

https://developer.mozilla.org/en/XMLHttpRequest
http://www.w3schools.com/xml/xml_http.asp
http://msdn.microsoft.com/en-us/library/windows/apps/cc836466%28v=vs.85%29.aspx
http://ntesmailfetc.blog.163.com/blog/static/206287061201241011546581/
http://justcoding.iteye.com/blog/1366102
http://www.queness.com/post/8567/create-a-dead-simple-twitter-feed-with-jquery
您可能感興趣的文章:
  • JSON 入門教程基礎(chǔ)篇 json入門學(xué)習(xí)筆記
  • javascript學(xué)習(xí)之json入門
  • JSON學(xué)習(xí)筆記
  • JSON 教程 json入門學(xué)習(xí)筆記
  • Python解析json文件相關(guān)知識學(xué)習(xí)
  • JSON stringify方法原理及實例解析
  • Java使用JSON傳遞字符串注意事項解析
  • 10分鐘掌握XML、JSON及其解析
  • Java解析JSON數(shù)據(jù)時報錯問題解決方案
  • javascript解析json格式的數(shù)據(jù)方法詳解
  • 10分鐘學(xué)會js處理json的常用方法

標簽:銅陵 益陽 儋州 阿拉善盟 延邊 張掖 鷹潭

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Ajax與JSON的一些學(xué)習(xí)總結(jié)》,本文關(guān)鍵詞  Ajax,與,JSON,的,一些,學(xué)習(xí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ajax與JSON的一些學(xué)習(xí)總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Ajax與JSON的一些學(xué)習(xí)總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 抚顺新钢铁有限公司| 烟台东恒机械有限公司| 山东骏腾起重设备有限公司| 烟台建筑机械有限公司| 浙江杰豹机械有限公司| 江苏苏力机械有限公司| 杭州五金机械有限公司| 禹城益佳机械有限公司| 江阴市江南轻工机械有限公司| 苏拉纺织机械有限公司| 无锡市丰玮机械设备有限公司| 北京长空机械有限公司| 河北工程机械有限公司| 华天机械制造有限公司| 广州文穗塑料机械有限公司| 郑州锦德润机械设备有限公司| 南通佳宝机械有限公司| 唐山国义钢铁有限公司| 长沙宏银机械有限公司| 佳友精密机械有限公司| 华电重工装备有限公司| 广东华菱机械有限公司| 安宁市永昌钢铁有限公司| 上海 食品机械有限公司| 常州拓美威精密机械有限公司 | 济南业兴通工程机械有限公司| 盐城机械设备有限公司| 上海嘉迪机械有限公司| 无锡聚英机械有限公司| 上海杰姆博机械设备有限公司| 广东中泽重工有限公司| 佛山玻璃机械有限公司| 山东起重机有限公司| 淮安华辉机械设备有限公司| 山东山推工程机械结构件有限公司| 上海锐精密机械有限公司| 重庆江增机械有限公司| 大丰联鑫钢铁有限公司| 常州市锦益机械有限公司| 美卓造纸机械有限公司| 浙江胜祥机械有限公司| 德州锦冠钢铁有限公司| 扬州扬工机械有限公司| 山东龙起重工有限公司| 东莞市瑞沧机械设备有限公司| 威海精密机械有限公司| 招商局重工(江苏)有限公司 | 济南启正机械工业有限公司| 江阴市祥达机械制造有限公司| 济南泽机械有限公司| 新乡市金原起重机械有限公司| 山东金大丰机械有限公司| 绍兴金昊机械制造有限公司| 湖南龙凤机械制造有限公司| 上海昶旭包装机械有限公司| 天津 机械设备有限公司| 建湖县液压机械有限公司| 山东龙腾机械有限公司| 上海合劲传动机械有限公司| 江苏省南扬机械制造有限公司| 江苏银河机械有限公司| 佛山突破机械有限公司| 阿特拉斯机械设备有限公司| 河北新金钢铁有限公司| 广东信昌机械有限公司| 东莞正扬电子机械有限公司怎么样| 嘉兴机械设备有限公司| 上海钢铁交易中心有限公司| 台州精密机械有限公司| 上海紫宏机械有限公司| 恒兴机械设备有限公司| 浙江胜代机械有限公司| 青岛 塑料机械有限公司| 沈阳斗山工程机械有限公司| 伊之密机械有限公司| 登福机械(上海)有限公司| 浙江森工木工机械有限公司| 天津润机械有限公司| 临沂机械设备有限公司| 江苏沃元精密机械有限公司| 佛山市奥索包装机械有限公司 | 浙江瑞志机械有限公司| 新乡正兴机械有限公司| 郑州水工机械有限公司| 苏州恒迈精密机械有限公司| 汤姆包装机械有限公司| 山东机械制造有限公司| 唐山正丰钢铁有限公司| 青岛奥威机械有限公司| 山东冠华重工机械有限公司| 常州福牛机械有限公司| 特斯克机械有限公司| 摩丁机械常州有限公司| 安阳永兴钢铁有限公司| 深圳市硕方精密机械有限公司| 昆玉钢铁有限公司招聘| 永胜机械工业有限公司| 辽宁营口钢铁有限公司| 温州精宇机械有限公司| 山东豪迈机械制造有限公司| 无锡塑机械有限公司| 徐州农丰机械有限公司| 无锡鹰贝机械有限公司| 广州振通机械有限公司| 广东重工监理有限公司| 广州机械自动化有限公司| 浙江远信印染机械有限公司| 沈阳斗山工程机械有限公司| 陕西通运机械有限公司| 潍坊圣旋机械有限公司| 德州机械制造有限公司| 新乡 筛分机械有限公司| 郑州志乾机械设备有限公司| 西安亿起来贸易有限公司| 广东华三行工程机械有限公司 | 昆明 机械制造 有限公司| 上海 输送机械有限公司| 哈尔滨联科包装机械有限公司| 温州市友田包装机械有限公司| 兰州炊事机械有限公司| 江苏利普机械有限公司| 威海环宇化工机械有限公司| 江阴市机械制造有限公司| 上海太腾机械设备有限公司| 日照立盈机械有限公司| 山东冠华重工机械有限公司| 台进精密机械有限公司| 四川兴明泰机械有限公司 | 东莞市峰茂机械设备有限公司 | 招商局重工(江苏)有限公司 | 台林机械有限公司 -| 威海隆发机械有限公司| 潍坊凯隆机械有限公司| 广东巨风机械制造有限公司| 乐清市锐成机械有限公司| 山东华雄机械有限公司| 青岛塑料机械有限公司| 江苏中热机械设备有限公司怎么样 | 山西秋林机械有限公司| 机械有限公司 法兰| 天津市天重江天重工有限公司| 德阳 机械有限公司| 洛阳卡瑞起重设备有限公司| 山东工大机械有限公司| 佛山玻璃机械有限公司| 襄阳 机械 有限公司| 基伊埃机械设备天津有限公司 | 上海昊农农业机械有限公司| 永盛达机械有限公司| 电力机械制造有限公司| 重庆力波机械有限公司| 广东富华重工制造有限公司| 南京远景机械有限公司| 新乡市利尔机械有限公司| 上海众星洗涤机械制造有限公司| 台州欧玮机械有限公司| 昆明 机械 有限公司| 南通新兴机械制造有限公司| 济南蓝象数控机械有限公司| 桂林正东机械制造有限公司| 南京星德机械有限公司| 苏州宇钻机械有限公司| 山东大华机械有限公司| 新乡市新久振动机械有限公司| 四川德盛钢铁有限公司| 武汉贝瑞克机械制造有限公司 | 天津江天重工有限公司| 福建晋工机械有限公司| 上海颖盛机械有限公司| 南京机械设备制造有限公司| 沃洲机械制造有限公司| 全椒 机械有限公司| 深圳巨涛机械设备有限公司 | 上海机械制造有限公司| 成都诚旭精密机械有限公司| 浙江绿峰机械有限公司| 东莞东久机械有限公司| 长春协展机械工业有限公司| 南通振康机械有限公司| 大江重工焦作有限公司| 山东宇龙机械有限公司| 厦门华峰辊压机械有限公司| 河南省矿山起重机制造有限公司| 河南省起重机械有限公司| 深圳市荣德机械设备有限公司| 嘉宝精密机械有限公司| 四平方向机械有限公司| 西安星火包装机械有限公司| 济南蓝象数控机械有限公司| 广州市三禾机械有限公司| 山东 纺织机械 有限公司| 慈溪机械设备有限公司| 西安星火包装机械有限公司 | 广州佳速精密机械有限公司 | 上海竹达机械设备有限公司| 江苏东禾机械有限公司| 徐州智茸工程机械有限公司| 丝网机械 有限公司| 东莞协鑫机械有限公司| 上海海邦机械设备制造有限公司| 阳宏机械制造有限公司| 贵州红林机械有限公司| 新鹏辉钢铁有限公司| 唐山文丰钢铁有限公司| 江苏长强钢铁有限公司| 徐州随车起重机有限公司| 上海传动机械有限公司| 广州科盛隆纸箱包装机械有限公司| 无锡市阳通机械设备有限公司| 河南省矿山起重有限公司| 安特精密机械有限公司| 河北金鼎钢铁有限公司| 山东宁联机械制造有限公司| 山东数控机械有限公司| 俊杰机械深圳有限公司| 江苏福克斯机械有限公司| 嘉兴机械制造有限公司| 深圳市合发齿轮机械有限公司| 天马电子机械有限公司| 贵州力顺机械有限公司| 华丽木工机械有限公司| 青岛悦工机械有限公司| 成都 精密机械有限公司| 杭州大禹机械有限公司| 曲阜机械设备有限公司| 无锡水登机械有限公司| 优瑞纳斯液压机械有限公司| 无锡澳美机械有限公司| 光大机械厂有限公司| 莱钢永锋钢铁有限公司| 南京惠德机械有限公司| 武汉中粮机械有限公司| 上海环野机械有限公司| 温岭永进机械有限公司| 安丰钢铁有限公司电话| 重庆培柴机械制造有限公司| 成都蓉诚机械设备有限公司| 淄博协丰机械有限公司| 新乡市中轻机械有限公司 | 陕西金奇机械电器制造有限公司 | 南昌欣向荣机械有限公司| 常州迈腾机械有限公司| 浙江宇捷机械有限公司| 长兴诺力机械有限公司| 广州甲宝机械有限公司| 南阳鼎鑫钢铁有限公司| 成都神钢建设机械有限公司| 广州市天烨食品机械有限公司 | 机械密封件有限公司| 浙江五一机械有限公司| 江苏华澄重工有限公司| 韩通船舶重工有限公司| 天津华信机械有限公司| 韩通船舶重工有限公司| 东莞市正一轴承机械有限公司| 浙江君鸿机械有限公司| 南方路面机械有限公司| 浙江高达机械有限公司| 张家港机械制造有限公司| 海宁弘德机械有限公司| 登福机械上海有限公司| 河北 机械 有限公司| 徐州压力机械有限公司| 常州胜代机械有限公司| 山东华屹重工有限公司| 许昌市机械有限公司| 苏州凯尔博精密机械有限公司| 秦皇岛佰工钢铁有限公司| 机械设备租赁有限公司| 昆山五金机械有限公司| 青岛精密机械有限公司| 四川宏华友信石油机械有限公司| 重庆江峰机械有限公司| 浙江盛维机械有限公司| 宁波友杰机械有限公司| 浙江汉克机械有限公司| 张家港机械有限公司| 石家庄嘉祥精密机械有限公司| 沂水巨龙机械有限公司| 无锡金球机械有限公司| 海狮洗涤机械有限公司| 济南包装机械有限公司| 北京食之秀机械设备有限公司| 菲美得机械有限公司| 昆成机械制造有限公司| 长沙天映机械有限公司| 浙江汉克机械有限公司| 杭州天扬机械有限公司| 鞍山 机械有限公司| 邦贝机械制造有限公司| 易百通机械有限公司| 苏州海盛精密机械有限公司| 沈阳鸿本机械有限公司| 东莞市实诚机械有限公司| 浙江青山钢铁有限公司| 兴世机械制造有限公司| 山东博精化工机械有限公司| 张家港白熊科美机械有限公司| 上海优拜机械有限公司| 瑞利包装机械有限公司| 珠海飞马传动机械有限公司 | 昆山施耐特机械有限公司| 台州万洲机械有限公司| 宣威凤凰钢铁有限公司| 上海精机械设备有限公司| 平煤机械设备有限公司| 河北凯瑞重工有限公司| 宝德机械国际有限公司| 扬州恒润海洋重工有限公司 | 浙江科鑫重工有限公司| 昆山江锦机械有限公司| 无纺布机械有限公司| 杭州雅顿过滤机械有限公司 | 上海振华重工有限公司| 创宝包装机械有限公司| 溧阳科华机械制造有限公司| 河北中浩机械制造有限公司| 广州工程机械有限公司| 湖南金牛重工机械有限公司| 麻阳金湘钢铁有限公司| 江阴伟江机械有限公司| 东莞市力华机械设备有限公司| 浩博海门机械有限公司| 扬州高标机械有限公司| 温州市友田包装机械有限公司 | 上海远跃制药机械有限公司| 东莞正为机械有限公司| 旭英机械有限公司招聘| 杭州机械设备有限公司| 南京聚力化工机械有限公司| 高邮和益机械有限公司| 山东元裕机械有限公司| 佛山市松川机械设备有限公司| 江门振达机械有限公司| 苏州腾龙机械有限公司| 上海昶旭包装机械有限公司| 宁波威恩精密机械有限公司 | 河南起重机械有限公司| 河北春耕机械制造有限公司| 济南华飞数控机械有限公司| 山西 重工有限公司| 富华重工有限公司老板| 伯曼机械制造有限公司| 江苏环保机械有限公司| 汉中燕航精工机械有限公司| 宁波创基机械有限公司| 上海胜松机械制造有限公司| 青岛美嘉隆包装机械有限公司| 韶瑞重工有限公司招聘| 杭州瑞东机械有限公司| 重庆精密机械有限公司| 上海凌鹰机械有限公司| 浙江国机械有限公司| 济南捷迈数控机械有限公司| 东莞市五全机械有限公司| 潍坊市贝特机械有限公司| 江苏利普机械有限公司| 武汉钢铁有限公司疫情| 上海臣轩机械有限公司| 苏州海盛精密机械有限公司怎么样 | 青岛永强木工机械有限公司| 黄山市机械有限公司| 湖南润通机械制造有限公司| 山东永华机械有限公司| 机械租赁有限公司名字| 青岛安成食品机械有限公司 | 淮安液压机械有限公司| 广州市金王机械设备有限公司| 温州威特机械有限公司| 天津安东石油机械制造有限公司| 涿州北方重工设备设计有限公司| 上海台新食品机械有限公司| 江苏竣业过程机械设备有限公司| 青岛博朗特机械设备有限公司 | 苏州宁兴精密机械有限公司| 潍坊广德机械有限公司| 广州坚诺机械设备有限公司 | 九龙机械制造有限公司| 苏州同鑫鸿精密机械有限公司| 温岭市大众精密机械有限公司| 杭州驰林机械有限公司| 昆明机械制造有限公司| 蓬莱万寿机械有限公司| 鹤壁市豫星机械制造有限公司| 天翔机械制造有限公司| 上海久协机械设备有限公司| 众工机械机械有限公司| 山东大信重工有限公司| 玉环县三和机械制造有限公司| 上海兴享机械工业有限公司| 广州市台展机械有限公司 | 潍坊凯信机械有限公司| 苏州鹏丰机械元件有限公司| 广州市 工程机械有限公司| 江西为民机械有限公司| 北京京民兴机械设备有限公司| 扬州沃尔特机械有限公司| 深圳市德润机械有限公司 | 杭州通产机械有限公司| 无锡东元精密机械有限公司| 瑞安市华东包装机械有限公司| 浙江森工木工机械有限公司| 河北东方德源机械制造有限公司| 江阴凯迈机械有限公司| 常州龙鹏机械有限公司| 佳铭机械有限公司骗局| 无锡 精密机械有限公司| 沂水巨龙机械有限公司| 南通 机械有限公司| 无锡精密机械有限公司| 长春泰盟机械制造有限公司| 常州立达纺织机械有限公司| 上海精密机械制造有限公司| 合肥华运机械制造有限公司| 研精舍上海精密机械加工有限公司| 泰田液压机械有限公司| 宁波机械配件有限公司| 常州龙鹏机械有限公司| 长沙旭众机械设备有限公司| 大江重工焦作有限公司| 新疆 机械有限公司| 河南森源重工有限公司| 东莞泽源机械有限公司| 常州市锦益机械有限公司| 保定 机械有限公司| 徐州机械设备有限公司| 郑州海特机械有限公司| 天津轧三钢铁有限公司| 江苏银河机械有限公司| 武汉钢铁有限公司官网| 东莞达机械有限公司| 南通奥普机械工程有限公司| 宁波塑料机械有限公司| 青岛佳友包装机械有限公司| 宁波壬鼎机械有限公司| 沈阳 机械制造有限公司| 郑州一帆机械设备有限公司| 常州汉森机械有限公司| 潍坊宝润机械有限公司| 郑州天龙机械有限公司| 东莞瑞辉机械有限公司| 张家港同大机械有限公司| 台州市路桥奇勇农业机械有限公司| 河南重机械有限公司| 北京起重设备有限公司| 深圳市创世纪机械有限公司| 常州柳工机械有限公司| 常州迈腾机械有限公司| 青岛威尔塑料机械有限公司| 韩通船舶重工有限公司| 珠海市广浩捷精密机械有限公司 | 河南省中原起重机械有限公司| 浙江飞达机械有限公司| 深圳精密机械有限公司| 机械(上海)有限公司| 重庆动力机械有限公司| 芜湖 机械制造有限公司| 天津动力机械有限公司| 安徽柳工起重机有限公司| 南京康尼精密机械有限公司| 上海舜诺机械有限公司| 青岛精锐机械制造有限公司 | 东莞市岛精机械有限公司| 永华机械有限公司招聘| 芜湖中安重工自动化装备有限公司 | 辽宁三君工程机械有限公司| 河北犀牛民用机械有限公司| 北京北宇机械设备有限公司 | 浙江华安机械有限公司| 沈阳韩兆机械有限公司| 杭州胜驰机械有限公司| 上海中吉机械有限公司| 浙江威泰机械有限公司| 淄博联泰机械有限公司| 成都中挖机械有限公司| 南京科倍隆机械有限公司| 烟台石油机械有限公司| 杭州贝克机械有限公司| 豫工机械设备有限公司 | 广州恒星冷冻机械制造有限公司| 青岛特殊钢铁有限公司| 机械设计 有限公司| 上海宇意机械有限公司| 江苏优远机械有限公司| 凯岛起重机械有限公司| 佛山新元机械有限公司| 兴虎动力机械有限公司| 苏州杰威尔精密机械有限公司 | 张家港 机械有限公司| 大连科信机械有限公司| 东莞市力华机械设备有限公司 | 苏州日拓机械有限公司| 山东六丰机械工业有限公司| 青岛三益塑料机械有限公司| 青岛九合重工机械有限公司| 沈阳机械设备有限公司| 上海冉本机械制造有限公司| 意达纺织机械有限公司| 大连仁海重工有限公司| 上海钦典机械制造有限公司| 固精密机械有限公司| 宏兴钢铁有限公司官网| 无锡鹰贝机械有限公司| 三益精密机械有限公司| 唐山印刷机械有限公司| 锦辉五金机械有限公司| 上海乾承机械设备有限公司| 浙江富昌机械有限公司| 中航国际钢铁贸易有限公司| 河南机械制造有限公司| 宁波天竺工程机械有限公司| 雷肯农业机械有限公司| 徐州凯工机械有限公司| 徐州徐工基础工程机械有限公司| 山东 重工有限公司| 常州度盛机械有限公司| 常州常发动力机械有限公司| 利星行机械有限公司| 河源德润钢铁有限公司| 上海钊凯包装机械有限公司| 上海山启机械制造有限公司| 山东龙腾机械有限公司| 安徽宏远机械制造有限公司| 南通新兴机械制造有限公司| 浙江荣德机械有限公司| 禹州市机械有限公司| 苏州市江南石化机械有限公司 | 南昌矿山机械有限公司| 上海固好包装机械有限公司| 临沂机械制造有限公司| 芜湖汇丰机械工业有限公司| 上海永德食品机械有限公司| 大连 重工有限公司| 南京赛达机械制造有限公司| 上海嘉峥机械有限公司| 沈阳凯力拓机械设备有限公司| 镇江斯伊格机械有限公司| 安阳永兴钢铁有限公司| 广州市市政工程机械施工有限公司| 河南省邦恩机械制造有限公司| 营口金辰机械有限公司| 全精密机械有限公司| 常州儒邦机械有限公司| 山西万泽锦达机械制造有限公司| 上海机械配件有限公司| 济南龙安机械有限公司| 自动化机械有限公司| 宁波威恩精密机械有限公司| 苏州擎邦机械有限公司| 郑州工程机械有限公司| 上海文胜机械设备有限公司| 浙江汉达机械有限公司| 邢台钢铁有限公司官网| 烟台华隆机械有限公司| 无锡裕达机械有限公司| 南通腾中机械有限公司| 上海造及精密机械制造有限公司| 武汉益达建设机械有限公司| 慈溪机械设备有限公司| 凯斯纽荷兰机械 哈尔滨 有限公司| 温州润新机械制造有限公司| 上海乔麦包装机械有限公司| 三星重工业宁波有限公司| 枣庄誉源挂车机械有限公司| 沈阳盈好机械有限公司| 镇江机械制造有限公司| 重庆龙建机械有限公司| 辽宁 机械制造有限公司| 山东良鑫机械有限公司| 山东建筑机械有限公司| 沈阳维用精密机械有限公司| 广东 机械设备有限公司| 曼透平机械有限公司| 昆山机械 有限公司| 杭州光大机械有限公司| 河南黄河防爆起重机有限公司| 沈阳鸿本机械有限公司| 温岭华驰机械有限公司| 曲阜机械制造有限公司| 合肥福晟机械制造有限公司| 上海信进精密机械有限公司| 吉川机械设备有限公司| 上海松精机械制造有限公司| 自动化机械设备有限公司| 鑫泰数控机械有限公司| 慈溪 机械 有限公司| 重庆泰诺机械有限公司| 重庆地泽机械有限公司| 河北永明地质工程机械有限公司| 河南兴远起重机有限公司| 四川工程机械有限公司| 武汉船用机械有限公司| 成都康博机械有限公司| 厦门市机械设备有限公司| 东莞志成机械有限公司| 昆山博通机械设备有限公司| 山东豪迈机械制造有限公司| 泉州金鹰机械有限公司| 广州市汇格机械设备有限公司| 威海环宇化工机械有限公司| 浙江乾坤机械有限公司| 苏州拓博机械有限公司| 国机铸锻机械有限公司| 常州嘉耘机械有限公司| 深圳市兴合发齿轮机械有限公司| 南京机械制造有限公司| 重庆洲泽机械制造有限公司| 郑州市恒昌机械制造有限公司| 青岛欧普机械设备有限公司| 东莞钰腾机械有限公司| 潍坊市贝特机械有限公司| 山西立恒钢铁有限公司| 上海卓汇机械有限公司| 安徽中晨机械有限公司| 重工机械制造有限公司| 浙江胜祥机械有限公司| 烟台微特机械有限公司| 南京腾阳机械有限公司| 无锡裕达机械有限公司| 郑州 食品机械有限公司| 佐竹机械苏州有限公司| 杭州定江机械有限公司| 河南信联重工机械有限公司| 景德镇 机械有限公司| 龙口中宇机械有限公司| 浩博海门机械有限公司| 青岛永正化工机械有限公司| 温州迈高机械有限公司| 东莞市沃德精密机械有限公司| 贵阳长乐钢铁有限公司| 章丘宇龙机械有限公司| 德大机械昆山有限公司| 柳州市超凌顺机械制造有限公司 | 广州汇亿机械有限公司| 浙江志高机械有限公司| 无锡奥野机械有限公司| 东莞市通盛机械有限公司| 佳铭机械有限公司骗局| 上海戈扬包装机械有限公司 | 武汉 机械制造有限公司| 威海行雨化工机械有限公司| 苏州福润机械有限公司| 河北展利机械有限公司| 烟台金土源机械化工程有限公司| 东莞市锋机械有限公司| 郑州企鹅粮油机械有限公司| 常州拓美威精密机械有限公司 | 海宁弘德机械有限公司| 河北裕华钢铁有限公司| 上海曼亿包装机械有限公司 | 江苏永立机械有限公司| 新乡市起重机厂有限公司| 肥城云宇机械有限公司| 鞍钢朝阳钢铁有限公司| 潍坊 机械有限公司| 环保设备机械有限公司| 深圳精密达机械有限公司| 张家港市家源机械有限公司| 恒泰机械制造有限公司| 常州昊博机械有限公司| 山东鲁新起重设备有限公司| 浙江威泰机械有限公司| 苏州日拓机械有限公司| 宝钢湛江钢铁有限公司招聘| 上海恒麦食品机械有限公司| 济宁立派工程机械有限公司| 河北金维重工有限公司| 诺尔起重设备有限公司| 山东永弘机械有限公司| 山东明威起重设备有限公司 | 郑州志乾机械设备有限公司| 东莞达机械有限公司| 台州万州机械有限公司| 印刷包装机械有限公司| 服装有限公司起名大全| 乐陵双鹤机械制造有限公司| 佛山市中牌机械有限公司| 日晗精密机械有限公司| 宁波雄腾机械有限公司| 无锡开普机械有限公司| 济南 液压机械有限公司| 南昌机械设备有限公司| 北京大铭世进机械设备有限公司| 浙江瑞尔斯机械有限公司| 洛阳鹏起实业有限公司怎么样| 河南康迪机械有限公司| 济宁通佳机械有限公司| 淮安液压机械有限公司| 天津华信机械有限公司| 江苏隆达机械设备有限公司| 上海金恒机械制造有限公司| 新乡正兴机械有限公司| 龙口富元机械有限公司| 山东瑞华工程机械有限公司| 赵县金利机械有限公司| 张家港斯依格机械设备制造有限公司| 济南天业工程机械有限公司| 山东 食品机械 有限公司| 瑞 机械有限公司| 上海德耐尔压缩机械有限公司| 上海科斯包装机械有限公司 | 东莞市永乐机械有限公司| 青州泰达机械有限公司| 昆山美和机械有限公司| 苏州昌瑞机械有限公司| 无锡市川中五金机械有限公司| 韶瑞重工有限公司招聘| 山东大力机械有限公司| 河南真牛起重机有限公司| 常州机械制造有限公司| 江苏鸿泰钢铁有限公司| 乐清市机械有限公司| 徐工机械有限公司现状| 南通市通州区三槐机械制造有限公司| 合肥光裕机械有限公司| 丽驰精密机械有限公司| 桂林恒达矿山机械有限公司| 宁波昌扬机械工业有限公司| 石家庄 机械 有限公司| 浙江佑天元包装机械制造有限公司| 江阴新迪机械有限公司| 东莞高臻机械设备有限公司| 浙江盾安机械有限公司| 洛阳精密机械有限公司| 东莞市金坤机械设备有限公司| 江苏海豚船舶机械有限公司| 山西常平钢铁有限公司| 唐山丰润钢铁有限公司| 山东鲁成起重机械有限公司| 福建泉成机械有限公司| 杭州天扬机械有限公司| 温州华印机械有限公司| 黄石华旦机械制造有限公司| 郑州天龙机械有限公司| 天津敏信机械有限公司| 杭州 机械设备有限公司| 衡阳沃力机械有限公司| 恩比尔(厦门)机械制造有限公司| 长葛机械制造有限公司| 常州市新武机械有限公司| 兖矿大陆机械有限公司| 星包装机械有限公司| 安徽中晨机械有限公司| 广东光信机械有限公司| 安徽涌诚机械有限公司| 沈阳 机械设备有限公司| 常熟通江机械有限公司| 合肥包装机械有限公司| 沈阳华盛机械有限公司| 上海定盛机械有限公司| 昆荣机械(昆山)有限公司| 青州市远航机械设备有限公司| 杭州川禾机械有限公司| 诸城市安泰机械有限公司| 珠海市中鑫隆机械化建设工程有限公司 | 淄博晟峰机械有限公司| 青岛中华宇塑料机械有限公司| 青岛安成食品机械有限公司 | 马长江钢铁有限公司| 常州度盛机械有限公司| 山东永健机械有限公司| 长沙昊博机械设备有限公司| 张家港重工有限公司| 临海机械有限公司招聘| 泰安古河机械有限公司| 东莞市 机械有限公司| 伯曼机械制造有限公司| 天津市天机液压机械有限公司| 四川川宏机械有限公司| 山东瑞华机械有限公司| 福建南方路面机械有限公司| 郑州明瑞机械设备有限公司 | 廊坊 包装机械有限公司| 宁波隆源精密机械有限公司 | 上海固好包装机械有限公司| 常州度盛机械有限公司| 廊坊百冠包装机械有限公司 | 北京城建重工有限公司| 湖北华伟石化机械设备制造有限公司| 佛山机械设备有限公司| 合肥中达机械制造有限公司| 江苏苏盐阀门机械有限公司| 新乡市起重机厂有限公司| 珠海市机械有限公司| 河南重型机械有限公司| 上海博储机械工业有限公司| 杭州鸿机械有限公司| 青岛恒林机械有限公司| 定州市至信机械制造有限公司 | 中交天和机械设备制造有限公司 | 江苏银华春翔机械制造有限公司| 源田床具机械有限公司| 上海辰品食品机械有限公司| 宿迁 机械 有限公司| 三一重工昆山有限公司| 天津泰威机械有限公司| 宁波 钢铁有限公司| 长兴诺力机械有限公司| 深圳市德润机械有限公司| 台在机械设备有限公司| 上海卓亚矿山机械有限公司| 博可机械上海有限公司| 临沂大阳通用机械有限公司| 平湖机械制造有限公司| 力华机械设备有限公司| 温州华珍机械有限公司| 佛山液压机械有限公司| 上海伍行机械设备有限公司| 沧州铁狮磨浆机械有限公司| 浙江飞达机械有限公司| 上海熊猫机械有限公司| 上海集嘉机械有限公司| 山东博精化工机械有限公司| 江阴液压机械有限公司| 江苏鼎盛重工有限公司| 温州威特机械有限公司| 广州益川机械有限公司| 沧州凯德机械有限公司| 广东力丰机械制造有限公司| 青岛恒林机械有限公司| 廊坊畅享机械有限公司| 安徽 机械制造有限公司| 常州光明包装机械有限公司| 瑞德森机械有限公司| 安丰钢铁有限公司电话| 上海乔麦包装机械有限公司| 机械设计 有限公司| 江苏机械制造有限公司| 黎城太行钢铁有限公司| 无锡鹰普机械有限公司| 佳木斯佳联收获机械有限公司| 芜湖机械制造有限公司| 广东重工建设监理有限公司| 杭州合立机械有限公司| 锦州天晟重工有限公司| 温岭市林大机械有限公司| 小森机械南通有限公司| 龙川航辉钢铁有限公司| 山东矿山机械 有限公司| 福建群峰机械有限公司| 联德精密机械有限公司| 长沙远洋机械制造有限公司 | 盘江矿山机械有限公司| 河南省矿山起重机械有限公司| 常州龙鑫化工机械有限公司| 常州高凯精密机械有限公司| 中山市信元铝门窗机械制造有限公司 | 海宁亚东机械有限公司| 邢台振成机械有限公司| 西安凌通机械有限公司| 武汉臻尚机械设备有限公司 | 世创机械制造有限公司| 杭州海特机械有限公司| 济南大鹏机械设备有限公司| 上海申虎包装机械设备有限公司| 新乡市金原起重机械有限公司| 镇江机械制造有限公司| 浙江塑料机械有限公司| 上海玖钲机械设备有限公司| 戴氏印刷机械有限公司| 上海圣起包装机械有限公司 | 丝网机械设备有限公司| 无锡华迪机械设备有限公司| 大连日立机械设备有限公司| 苏州苏安起重吊装有限公司| 江阴宏达机械有限公司| 北京火车头机械设备有限公司| 济宁朝阳机械有限公司| 江阴市祥达机械制造有限公司 | 招商局重工(江苏)有限公司| 山东萨丁重工有限公司| 山西高义钢铁有限公司| 河北输送机械有限公司| 济南 建筑机械有限公司| 山西 重工有限公司| 四川工程机械有限公司| 宜昌 机械设备有限公司| 无锡中机械有限公司| 比力特机械有限公司| 无锡塑机械有限公司| 瑞安 机械有限公司| 常州宏机械有限公司| 江阴鼎力起重机械有限公司| 浙江达青机械有限公司| 东莞市乔锋机械有限公司| 山东恒升机械有限公司| 新晨动力机械有限公司| 浙江矿山机械有限公司| 东莞市博志达工程机械制造有限公司 | 杭州冠浩机械设备有限公司| 洛阳中德重工有限公司| 北京起重设备有限公司| 青岛纺织机械有限公司| 河南省矿山起重有限公司| 西安柳工机械有限公司| 上海牛力机械有限公司| 浙江吉隆机械有限公司| 北京机械设备有限公司| 青岛武船重工有限公司| 山东威力重工机床有限公司| 洛阳市机械有限公司| 常州市雪龙机械制造有限公司| 上海亚华印刷机械有限公司| 江阴祥乐机械有限公司| 江苏迪迈机械有限公司| 郑州中联收获机械有限公司| 德州市机械有限公司| 宁波固奇包装机械制造有限公司 | 机电设备有限公司起名| 洛阳耿力机械有限公司| 安溪永兴机械有限公司| 新乡市利尔机械有限公司| 重庆比德机械有限公司| 东莞市东永源机械有限公司 | 惠州市机械有限公司| 佛山市科振机械设备有限公司 | 唐山宝航机械有限公司| 宏祥建筑机械有限公司| 郑州米格机械有限公司| 上海精元机械有限公司| 江苏竣业过程机械设备有限公司 | 郑州品创机械设备有限公司| 河北德林机械有限公司| 上海安展机械设备有限公司| 云南德胜钢铁有限公司| 临沂市机械有限公司| 兰州兴元钢铁有限公司| 徐州东岳工程机械有限公司| 广州永胜钢铁制品有限公司| 佛山陶瓷机械有限公司| 南京泽创机械有限公司| 江苏新技机械有限公司| 苏州凯尔博精密机械有限公司| 德国机械制造有限公司| 重庆阿德耐特动力机械有限公司| 东莞市永乐机械有限公司| 江苏鑫锋重工机床有限公司| 有限公司 印刷机械| 山东长城起重机械有限公司| 湖南汇杰机械设备有限公司| 青岛机械利有限公司| 无锡聚英机械有限公司| 张家港长力机械有限公司| 南通 机械有限公司| 迈安德食品机械有限公司| 河北普阳钢铁有限公司| 三一起重机械有限公司| 赣州群星机械有限公司| 汕头 机械有限公司| 江阴万恒机械制造有限公司| 江苏红旗印染机械有限公司 | 东莞市亚龙玻璃机械有限公司| 宁波旭升机械有限公司| 山东泰山机械有限公司| 宁波中能连通机械有限公司| 苏州荣业机械有限公司| 烟台精密机械有限公司| 圣博液压机械有限公司| 唐山松汀钢铁有限公司| 广州海缔机械有限公司| 上海陆达包装机械制造有限公司 | 钢铁国际贸易有限公司| 上海山美重型矿山机械有限公司| 徐工重型机械有限公司| 广州市汇格机械设备有限公司 | 鹰普机械宜兴有限公司| 洛阳工程机械有限公司| 西安科迅机械制造有限公司| 洛阳路通重工机械有限公司| 宝鸡南车时代工程机械有限公司 | 辽宁 机械制造有限公司| 昆山弘迪精密机械有限公司| 山东永弘机械有限公司| 苏州毕特富精密机械有限公司| 广州科盛隆纸箱包装机械有限公司| 四川建筑机械有限公司| 久隆久兴机械有限公司| 浙江上洋机械有限公司| 安徽宏远机械制造有限公司| 潍坊圣旋机械有限公司| 广州闽欣机械设备有限公司| 唐山宝泰钢铁有限公司| 无锡 精密机械有限公司| 长沙众宇机械有限公司| 河北鑫晟机械有限公司| 佛山玻璃机械有限公司| 宣城市建林机械有限公司| 河北澳金机械设备有限公司| 天津云飞机械有限公司| 凯达机械制造有限公司| 浙江建机起重机械有限公司| 江阴化工机械有限公司| 南通国盛精密机械有限公司| 西安 机械设备有限公司| 合肥二宫机械有限公司| 上海松精机械制造有限公司| 浙江小伦制药机械有限公司| 四川兴明泰机械有限公司| 青岛机械利有限公司|