Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

№124-06-2007 12:21:30

Souznik
Участник
 
Группа: Members
Зарегистрирован: 24-06-2007
Сообщений: 3
UA: Firefox 2.0

Проблема с AJAX при разработке тулбара для FF

Добрый всем день|ночь!
Делаю тулбар для работы с админкой сайта. Сперва хотел написать функцию авторизации в админке прямо с тулбара. Для этого поставил кнопку "login" по которой вызывается следующее  окошко:
sz_window.xul

Выделить код

Код:

<?xml version="1.0"?>

<dialog
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  id="myAuth"
  title="Auth"
  ondialogaccept="return onOK();"
  persist="screenX screenY width height"
  windowtype="myDialogWindowType" style="background: AppWorkspace;">

  <grid>
    <columns><column/><column/></columns>
    <rows>
      <row align="center"><label value="Site URL:"/><textbox id="url"/></row>
      <row align="center"><label value="Login:"/><textbox id="name" value="admin" /></row>
      <row align="center"><label value="Pass:"/><textbox id="pass" type="password"/></row>

    </rows>
  </grid>
<script type="application/x-javascript">
function onOK()
{
   window.arguments[0].out = {url:document.getElementById("url").value,
        login:document.getElementById("name").value,
        pass:document.getElementById("pass").value};
   return true;
}
</script>
</dialog>

Тут думаю все ясно.

Кнопка "login" вызывет функцию login() в следующем коде:
sz_top.js:

Выделить код

Код:

var http = new XMLHttpRequest();

function ajax(url,method,params)
{

        http.open(method, url+params, true);
        http.onreadystatechange = useHttpResponse;
        http.send(null);


}

const GBLTut_ConsoleService =
      Components.
          classes['@mozilla.org/consoleservice;1'].
              getService(Components.interfaces.nsIConsoleService);

function login()
{
    var params = {inn:{url:"foo", name:"bar", pass:"111"}, out:null};
    window.openDialog("chrome://artybar/content/sz_window.xul", "","chrome, dialog, modal", params).focus();
    if (params.out) {
  	 login =params.out.login;
	 url=params.out.url+"/admin.php";
	 pass=params.out.pass;
     pars="?Ulogin="+login+'&Upassw='+pass+'&Send='+"Submit";
     ajax(url,"POST",pars);
  }
}

function useHttpResponse() {
  if (http.readyState == 4) {
    var textout = http.responseText;
    GBLTut_Log(textout);
  }
}


function GBLTut_Log(sz_Message)
{
    GBLTut_ConsoleService.logStringMessage('Server vydal: ' + sz_Message);
}

*ответ сервера записывается в консоль ошибок :)
После начала работы вышла такая трабла, вместо POST запроса на сервер отправляется GET запрос.

Тестирую пока на следующем довольно простом коде:

admin.php:

Выделить код

Код:

<?
	PHPINFO(32);
?>

Часть ответа:
PHP Variables
Variable = Value
_REQUEST["Ulogin"] = admin
_REQUEST["Upassw"] = no value
_REQUEST["Send"] = Submit
_GET["Ulogin"] = admin
_GET["Upassw"] =no value
_GET["Send"]= Submit

*тут суть файла

Подскажите почему у меня в JS явно указано, что запрос POST, а сервер говорит что он GET?? Для работы нужен именно POST запрос!

И еще одна строка из phpinfo();

Выделить код

Код:

_SERVER["REQUEST_METHOD"] = POST

Заранее спасибо!

Отредактировано Souznik (24-06-2007 12:26:28)

Отсутствует

 

№224-06-2007 12:56:36

arka
Участник
 
Группа: Members
Зарегистрирован: 10-08-2005
Сообщений: 183
UA: Firefox 2.0
Веб-сайт

Re: Проблема с AJAX при разработке тулбара для FF

http.open(method, url+params, true); в params у вас все данные по логину, вот они и передаются через $_GET
http.send(null); - здесь вместо null должны быть post-данные
Рекомендую всё-таки почитать про Ajax, а не копи-пастить чужой код.

Отсутствует

 

№324-06-2007 13:08:55

Souznik
Участник
 
Группа: Members
Зарегистрирован: 24-06-2007
Сообщений: 3
UA: Firefox 2.0

Re: Проблема с AJAX при разработке тулбара для FF

http.open(method, url+params, true); в params у вас все данные по логину, вот они и передаются через $_GET
http.send(null); - здесь вместо null должны быть post-данные
Рекомендую всё-таки почитать про Ajax, а не копи-пастить чужой код.

Спасибо! Вот к чему приводят JS фреймфорки! Совершенной забываешь как это по настоящему делается!

Отсутствует

 

№424-06-2007 15:01:42

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785

Re: Проблема с AJAX при разработке тулбара для FF

насколько я знаю, чтобы данные ушли в post нужно обязательно (помимо указания post метода) добавить:

Выделить код

Код:

http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

Added Вск 24 Июн 2007 15:02:46 :
http://developer.mozilla.org/en/docs/AJAX:Getting_Started :

Note that if you want to POST data, you have to change the MIME type of the request using the following line:

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

Отсутствует

 

№524-06-2007 21:45:11

Souznik
Участник
 
Группа: Members
Зарегистрирован: 24-06-2007
Сообщений: 3
UA: Firefox 2.0

Re: Проблема с AJAX при разработке тулбара для FF

Всем спасибо  я уже разобрался!!!
Но тоько возникла такая трабла: Устанавливаю свой тулбар после этого:

1) Умирает средняя кнопка, работает тока скроллинг
2) URL в адрессной строке остается, при переходе на любую другую вкладку, таким же где использовал свое расширение
3) Стали серыми пункты в меню Вид -> Размер шрифта / Стиль страницы / Кодировка

Подскажите плиз...

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]