Общие вопросы интервью Ajax

Байду внешний интерфейс сервер Ajax

1: Что такое аякс? Какова роль ajax?

异步的javascript和xml  AJAX 是一种用于创建快速动态网页的技术。  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 другой IP-адрес и URL-адрес

6: Какие междоменные решения?

1: jsonp может решить только получение междоменного доступа (наиболее часто запрашиваемый)

  • Принцип: динамически создавайте тег скрипта. Использование атрибута src тега script не ограничивается политикой того же источника. Поскольку все атрибуты src и атрибуты href не ограничены политикой одного и того же происхождения. Можно запросить содержимое данных стороннего сервера.
  • шаг:
  1. создать тег скрипта
  2. Атрибут src скрипта устанавливает адрес интерфейса
  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对象才可以使用。
}

2: CORS: совместное использование ресурсов между источниками

  • Принцип: после того, как сервер установит HTTP-заголовок ответа Access-Control-Allow-Origin, браузер разрешит междоменные запросы.
  • Ограничение: Браузер должен поддерживать HTML5 и может поддерживать POST, PUT и другие методы, совместимые с ie9 и выше.
需要后台设置
Access-Control-Allow-Origin: *              //允许所有域名访问,或者
Access-Control-Allow-Origin: http://a.com   //只允许所有域名访问

3: Установить документ.домен

  • Принцип: для страниц под одним и тем же основным доменным именем и разными поддоменами вы можете установить 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 (成功) 服务器已成功处理了请求。 通常。

II: код состояния, начинающийся с 3

3xx (перенаправление) указывает, что для выполнения запроса требуются дальнейшие действия. Обычно эти коды состояния используются для перенаправления.
304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

3: Код состояния в начале 4

4xx (ошибка запроса) Эти коды состояния указывают на то, что запрос мог быть выполнен неправильно, что не позволяет серверу обработать
1:400 (错误请求) 服务器不理解请求的语法。
 
2:403 (禁止) 服务器拒绝请求。

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

Четыре: код состояния 5 в начале

5xx (Ошибка сервера) Эти коды состояния указывают на то, что на сервере произошла внутренняя ошибка при попытке обработать запрос. Эти ошибки могут быть ошибками самого сервера, а не ошибкой в ​​запросе
500 (服务器内部错误) 服务器遇到错误,无法完成请求。

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

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

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

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

505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。