AJAX技術ジュニア探査

コンセプト

Ajax技術は、ページを更新せずに、非同期にサーバから情報を取得するためのページを可能にします

アヤックスのコア技術は、XMLHttpRequestオブジェクト(XHR)であります

非同期コードは実際にはページの下の実行をブロックしないデータを要求されています

二 原生Ajax

1 XMRオブジェクトを作成します。

    VaRのXHR =新しいXLMHttpRequest();

2オープン要求|要求を準備

    xhr.open(パラメータ)      

パラメータは次のとおりです。 

リクエストタイプGET(コンテンツ要求アドレスは、スプライシングされました)

ポスト(非アドレス送信)

要求パスJS / data.json  

パス後のリクエストは介して取得した場合?スプライシングパラメータ、パラメータおよび接続

同期、非同期falseに非同期の場合はtrueブール

デフォルトのトゥーレは非同期で実行されます

図3は、要求を送信します

    xhr.send();   

背景に転送されたデータを送信します

           取得要求がnull(リクエストでリクエストパラメータのアドレス以降)

           ポスト要求は、伝送パラメータを設定することができ、それがnullでない場合は 

"は、una​​me = zhangsan&upwd = 123" の形式で

    注意:ポストを提出する前に、コードのアナログフォームの送信を追加

xhr.setRequestHeader( 'コンテンツタイプ'、 'アプリケーション/ x-www-form-urlencodedで')。

図4は、に応じて決定されます

    非同期リクエスト

       1結合は、イベントをリッスンonreadystatechangeに

応答ステータスコード取得2 のreadyStateを、受信完了か否かを判断します

図4は、readyStateのに受信端を示します

       応答結果の決意3

           xhr.status     要求のための200が成功しました  

要求経路404は存在しません

500サーバー内部の異常 

       4応答データをフェッチ

           xhr.responseText   データサーバ応答(フォーマットの可能性品種)

XHR。onreadystatechangeに= 関数(){

   IF(xhr.readyState == 4){

      IF(xhr.statusの== 200){

          コンソールの.log(xhr.responseText)。

      }

   }

}

同期要求はステータスコードを監視する必要はありません。

三原パッケージ生のAjax

図1は、呼び出し元のオブジェクトを定義します

       リクエストタイプ非同期データは、情報の処理方法をアップロードするかどうかをアドレス要求

たU1 = {

    方法: "GET"、

    URL: "JS / data.jsonキー= A&のuname = zhangsan&upwd = 12345?"、

    非同期:真、

    データ:{

           uname: "zhangsan"、

           upwd: "123456"

    }、

    成功:機能(結果){

           console.log(結果)。

    }

}。

       注:パラメータの結果は、AJAXコールバックデータに示されているデータ処理方法をもたらします。

データ処理方法のデータ処理結果を行います。

パッケージ2

       コアは、XMLHttpRequestオブジェクトを作成します

       コード:

VAR XHR =新しいXMLHttpRequestを();

       フォーマットパラメータB

              この手順では、変数に割り当てられ、コールのオブジェクトパラメータを除去した。主な内容であるトラバースと共にスプライシングさ

要求タイプ(大文字RPM)

リクエストアドレス(文字ステッチで要求を取得します)

非同期かどうか

(文字列に)情報をアップロード

データ処理方法

PARAM = obj.dat持っています。

//パラメータ指定された書式文字列のためのJSONオブジェクト形式を変換

    uname = zhangsan&upwd = 12345

VARし、paramArray = [];

//反復パラメータオブジェクト

{(PARAMでVARキー)のために

//ステッチパラメータ名と値

       VAR PA =キー+ "=" + PARAM [キー]。

//配列にデータを追加

       paramArray.push(PA)。

}

//記号で指定された文字列に配列

VARのP = paramArray.join( "&");

//ユーザーの要求タイプを取得

VAR法= obj.method.toUpperCase()。

リクエストがスプライシング要求アドレスのリクエストパラメータの後ろに、GETの場合、//要求タイプが決定されます

もし(方法== "GET"){

「?」;「?」でない場合は、使用//、モザイクを「&」を使用したときに、もしそうならアドレスが含まかどうかを判断します

    obj.url + =(obj.url).indexOf( "?")> -1?"&" + P: "?" + P;

}

       オープニング要求C   

xhr.open(方法、obj.url、obj.async)。

       D要求が提出します

              アナログフォームを追加し、後の方法の前に提出するよう要求を提出する前に、

              コードを提出し、要求されたコンテンツは、ポスト提出プロセスに追加されます

それはPOSTリクエストがある場合は、//、フォームの送信をシミュレートする必要があります

IF(method.toUpperCase()== "POST"){

//アナログフォームの送信

    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    // post提交

    xhr.send(p);

} else {

       // get提交

       xhr.send(null);

}

        E 响应判断

              分别对异步同步执行对应的流程

              设置回调函数 调用传入的数据处理方法对服务端响应的数据进行处理

判断是否是否是异步请求

if (obj.async) { // 异步请求

// 监听readySate的值,判断响应是够完毕

    xhr.onreadystatechange = function() {

// 如果完全响应,值为4

    if (xhr.readyState == 4){callback();}

    }

} else { // 同步请求

    callback();

    }

// 回调函数

function callback() {

// 判断是否响应成功  status=200

if (xhr.status == 200) {

    // 得到相应数据,并回调数据给调用者

    var result = xhr.responseText;

    obj.success(result);

    }

}

三 通过JQuery使用Ajax

JQuery中封装了Ajax

调用格式

普通调用

    $.ajax(参数);  参数为json对象

       json对象的参数包括

    {   type: "get",                 或者”post”

       url: "js/data.json",          目标地址

       data:{ },                   传入的数据

       dataType: "json"                服务器返回的数据类型

       success:function(result){对result的操作代码}

}  

以下为具体内容

type:请求方式 GET/POST

url:请求地址 url

async:是否异步,默认是 true 表示异步

data:发送到服务器的数据

dataType:预期服务器返回的数据类型

contentType:设置请求头

success:请求成功时调用此函数

error:请求失败时调用此函数

get调用

    $.get(参数)    通过逗号分隔 省略key值

$.get("js/data.json",{},function(data){console.log(data);});

post调用

    $.post(参数)   通过逗号分隔 省略key值

$.post("js/data.json",{},function(data){console.log(data);});

getJSON调用       属性通过逗号分隔 省略key值

$.getJSON("js/data.json",{},function(data){console.log(data);});

 

跨域调用

    两个域名,从一个域名访问另一个的域名 需要通过jsonp方式发送请求

    条件    1远程接口支持跨域访问

2 ajax中设置dataType:"jsonp" [jsonp:’callback’]

$.ajax({

   type:"get",

   url:"http://iservice.itshsxt.com/restaurant/find",

   data:{ },

   dataType:"jsonp",

   success:function(result){console.log(result);}

});

三 eclipse中web项目的设置

调出server窗口

    window菜单->show view ->other ->查找servers 选中打开窗口

创建server

    右击new ->server -> 选中Apache下的Tomcat版本 next->

选择tomcat目录(选bin的父目录)  选中jdk next ->完成

启动tomcat测试

注意:Tomcat的默认接口8080,与oracle冲突,需要手动关oracle服务或改端口

 

创建web项目

文档框new选择other.查找web 选择Dynamic Web Project  设项目名一路确认

在tomcat上右击选择(add and move) 在左右选框中移动项目

 

web项目中webContent下创建页面和资源文件 webContent与src都相当于根目录

    访问地址 localhost:端口号/项目名/(webContent下的直接目录)

おすすめ

転載: www.cnblogs.com/javaxiaobu/p/11128595.html