XHR API

Используя объект XMLHttpRequest расширение может общаться с удаленными серверами путем отправки и получения запросов. Для таких расширений нужно указать доступ к одному или нескольким хостам в файле манифесте (обратите внимание на строку “*://localhost/*” в листинге 3-31).

Листинг 3-31. Chapter3/XHRAPI/event_script.js
{
    "manifest_version" : 2,
    "name" : "API Demos: xhr API",
    "description" : "Demonstrates use of the xhr API",
    "version" : "1.2",
    "background" : {
        "scripts" : ["event_script.js"],
        "persistent" : false
    },
    "permissions" : [
        "*://localhost/*"
    ]
}

Когда доступы к хосту указана, то появляется возможность использовать XHR API, как и на обычных веб-страницах. В листинге 3-32 обратите внимание на переменную ucService в которой находиться ссылка на локальный сервер HTTP. PHP скрипт указан в листинге 3-33.

Листинг 3-32. Chapter3/TabsAPI/event_script.js
//region {переменные и функции}
var greeting = "Hello World!";
var xhr = new XMLHttpRequest();
function onReadyStateChange() {
    if(xhr.readyState == 4) {
        console.log(xhr.responseText);
    }
}
var host = "http://localhost/";
var ucService = host + "webpage.php?";
var queryString = "name=" + encodeURIComponent("xhr api");
//end-region

//region {вычисления}
console.log(greeting);
xhr.onreadystatechange = onReadyStateChange;
xhr.open("GET",ucService + queryString);
xhr.send();
//end-region

Строка запроса “name=xhr api” создаётся статическим способом. Так же она может быть сгенерирована динамически, например, из всплывающего окна Browser-Action или Content-UI.

На рисунке 3-37 показан ответ на запрос от сервера.

Листинг 3-33. Chapter3/XHRAPI/WebServer/webpage.php
<?php
$raw_input = trim($_GET["name"]);
if(!preg_match("/^[a-zA-Z ]*$/",$raw_input)) {
    echo "";
} else {
    echo strtoupper($raw_input);
}
?>

results matching ""

    No results matching ""