ホームページ  >  記事  >  ウェブフロントエンド  >  ajax のよくある面接の質問

ajax のよくある面接の質問

coldplay.xixi
coldplay.xixi転載
2020-07-31 11:37:282751ブラウズ

ajax のよくある面接の質問

1:ajax とは何ですか? ajaxの機能とは何ですか?

异步的javascript和xml  AJAX 是一种用于创建快速动态网页的技术。  ajax用来与后台交互

[トピックの推奨事項]:2020 Ajax 面接の質問と回答 (最新)

2: ネイティブ JS Ajax リクエストにはいくつかの手順があります?

//创建 XMLHttpRequest 对象
var ajax = new XMLHttpRequest();
//规定请求的类型、URL 以及是否异步处理请求。
ajax.open('GET',url,true);
//发送信息至服务器时内容编码类型
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
//发送请求
ajax.send(null);  
//接受服务器响应数据
ajax.onreadystatechange = function () {    if (obj.readyState == 4 && (obj.status == 200 || obj.status == 304)) { 
    }
};

3: json 文字列変換セット json オブジェクト、json オブジェクト変換 json 文字列

//字符串转对象
JSON.parse(json)eval('(' + jsonstr + ')')   
// 对象转字符串
JSON.stringify(json)

4: ajax のいくつかのリクエスト メソッドとは何ですか?それらの長所と短所は何ですか?

一般的に使用される投稿、取得、削除。コピー、ヘッド、リンクなどは一般的には使用されません。

###代码上的区别
 1:get通过url传递参数
 2:post设置请求头  规定请求数据类型###使用上的区别
 1:post比get安全
 (因为post参数在请求体中。get参数在url上面)
 2:get传输速度比post快 根据传参决定的。
 (post通过请求体传参,后台通过数据流接收。速度稍微慢一些。而get通过url传参可以直接获取)
 3:post传输文件大理论没有限制  get传输文件小大概7-8k ie4k左右
 4:get获取数据	post上传数据
 (上传的数据比较多  而且上传数据都是重要数据。所以不论在安全性还是数据量级 post是最好的选择)

5: クロスドメインはどのような状況で発生しますか?

同一生成元ポリシーの制限 ソースが異なるとクロスドメインが発生します。次の状況のいずれかが異なる場合、それらはすべて異なるソースからのものです。

http://www.baidu.com/8080/index.html

##http://プロトコルが異なりますwww異なるサブドメイン名baidu.comメイン ドメイン名が異なります8080ポート番号が異なります#www.baidu.com##6: クロスドメイン ソリューションとは何ですか?
ip アドレス URL とは異なります

1: jsonp はクロスドメインの取得のみを解決できます (最もよくある質問)

    原則: スクリプト タグを動的に作成します。 script タグの src 属性の使用は、同一生成元ポリシーによって制限されません。すべての src 属性と href 属性は同一生成元ポリシーによって制限されないためです。サードパーティサーバーのデータコンテンツをリクエストできます。
  • 手順:
スクリプト タグを作成するには
  1. スクリプトの src 属性はインターフェイス アドレスを設定します
  2. インターフェイス パラメーターにはカスタム関数名を指定する必要があります。そうしないと、バックエンドはデータを返すことができません。
  3. 関数名を定義してバックグラウンドで返されるデータを受信する
  4. //去创建一个script标签
    var  script = document.createElement("script");
    //script的src属性设置接口地址 并带一个callback回调函数名称
    script.src = "http://127.0.0.1:8888/index.php?callback=jsonpCallback";
    //插入到页面
    document.head.appendChild(script);
    //通过定义函数名去接收后台返回数据function jsonpCallback(data){
        //注意  jsonp返回的数据是json对象可以直接使用
        //ajax  取得数据是json字符串需要转换成json对象才可以使用。
    }
  5. 2:CORS: クロスドメイン リソース共有

    原則: サーバー設定アクセス -Control-Allow-OriginHTTP 応答ヘッダーの後、ブラウザーはクロスドメイン リクエストを許可します。
  • 制限: ブラウザーは HTML5 をサポートする必要があり、POST、PUT、およびその他のメソッドをサポートできます。 ie9 以降と互換性があります
  • 需要后台设置
    Access-Control-Allow-Origin: *              //允许所有域名访问,或者
    Access-Control-Allow-Origin: http://a.com   //只允许所有域名访问
  • 3: document.domain を設定します

    原則: 同じメイン ドメイン名で異なるページの場合サブドメイン名がある場合は、document.domain を設定して同じドメインにすることができます
  • 制限事項: 同じドメイン内のドキュメントはページ間の相互運用性を提供し、iframe ページをロードする必要があります
  • // URL http://a.com/foo
    var ifr = document.createElement('iframe');
    ifr.src = 'http://b.a.com/bar'; 
    ifr.onload = function(){
        var ifrdoc = ifr.contentDocument || ifr.contentWindow.document;
        ifrdoc.getElementsById("foo").innerHTML);
    };
    
    ifr.style.display = 'none';
    document.body.appendChild(ifr);
  • 4: 転送 (リバース プロキシ) に Apache を使用し、クロスドメインを同じドメインに変換します。

7: 一般的な http ステータス コードは何ですか?

1: 2

2xx (成功) で始まるステータス コードは、リクエストが正常に処理されたステータス コードを示します
200 (成功) 服务器已成功处理了请求。 通常。
2: 2: で始まるステータス コード3

3xx (リダイレクト) は、リクエストを完了するためにさらなるアクションが必要であることを示します。通常、これらのステータス コードはリダイレクトに使用されます。
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
3: 4

4xx で始まるステータス コード (リクエスト エラー) これらのステータス コードは、リクエストにエラーがあり、サーバーの処理を妨げている可能性があることを示します。
1:400 (错误请求) 服务器不理解请求的语法。
 
2:403 (禁止) 服务器拒绝请求。

3:404 (未找到) 服务器找不到请求的网页。
Four: 5

5xx で始まるステータス コード (サーバー エラー) これらのステータス コードは、サーバーがリクエストを処理しようとしたときに内部エラーが発生したことを示します。これらのエラーは、リクエスト エラーではなく、サーバー自体のエラーである可能性があります

500 (服务器内部错误) 服务器遇到错误,无法完成请求。

501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。

502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。

503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。

505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。
関連記事の推奨事項:
ajax ビデオ チュートリアル

以上がajax のよくある面接の質問の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。