Страницы: 1
Добрый всем день|ночь!
Делаю тулбар для работы с админкой сайта. Сперва хотел написать функцию авторизации в админке прямо с тулбара. Для этого поставил кнопку "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:
Часть ответа:
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();
Заранее спасибо!
Отредактировано Souznik (24-06-2007 12:26:28)
Отсутствует
http.open(method, url+params, true); в params у вас все данные по логину, вот они и передаются через $_GET
http.send(null); - здесь вместо null должны быть post-данные
Рекомендую всё-таки почитать про Ajax, а не копи-пастить чужой код.
Отсутствует
http.open(method, url+params, true); в params у вас все данные по логину, вот они и передаются через $_GET
http.send(null); - здесь вместо null должны быть post-данные
Рекомендую всё-таки почитать про Ajax, а не копи-пастить чужой код.
Спасибо! Вот к чему приводят JS фреймфорки! Совершенной забываешь как это по настоящему делается!
Отсутствует
насколько я знаю, чтобы данные ушли в post нужно обязательно (помимо указания post метода) добавить:
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');
Отсутствует
Всем спасибо я уже разобрался!!!
Но тоько возникла такая трабла: Устанавливаю свой тулбар после этого:
1) Умирает средняя кнопка, работает тока скроллинг
2) URL в адрессной строке остается, при переходе на любую другую вкладку, таким же где использовал свое расширение
3) Стали серыми пункты в меню Вид -> Размер шрифта / Стиль страницы / Кодировка
Подскажите плиз...
Отсутствует
Страницы: 1