Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Использование функции в скрипте (https://javascript.ru/forum/dom-window/39726-ispolzovanie-funkcii-v-skripte.html)

danik.js 10.07.2013 13:15

Цитата:

Сообщение от Stalin45
req.onreadystatechange = Refresh();

Скобки тут не нужны. Тебе же нужно присвоить саму функцию. А так получается что ты вызваешь функцию и присваиваешь ее результат

danik.js 10.07.2013 13:19

Цитата:

Сообщение от Stalin45
navigator.appName == "Microsoft Internet Explorer"

Хреновая проверка. Во-первых, XMLHttpRequest нету только в IE6-7, на которые можно забить, а если забить не хочется, то проверять так и нужно:
if (typeof XMLHtppRequest !== 'undefined')
    return new XMLHttpRequest;
else
    return 'какашка';

Stalin45 10.07.2013 14:18

danik.js, благодарю! Постепенно хоть проясняться начинает.
Только на основную проблему это все-таки не повлияло...
Тут уже 2 вопроса:
1.
function Refresh()
{
    var a = req.readyState; 
    if( a == 4 )
    {  
        document.getElementById('loading').innerHTML = "Succeed!";
    }
    else
    { 
        document.getElementById('loading').innerHTML = 'Loading.........';
    }
}

Почему функция сразу выдает "Succeed", не ожидая окончания php скрипта? В этом я уверен, поскольку сам скрипт после выдает:

Fatal error: Maximum execution time of 30 seconds

2. Отсюда: все-таки не передает он параметры, либо передает некорректно...в чем я ошибся??
Тут вот где-то ошибка, но не могу понять, в чем:
function changeIP() {
	var ip = document.getElementById('_ip');
	var mask = document.getElementById('_mask');
	var vlan = document.getElementById('_vlan');
	var ipad = document.getElementById('curIP');
    
	req.open('POST', 'telnetChange.php' , true );
    req.onreadystatechange = Refresh;
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var ParamStr = 'ip='+ ip.value +'&mask='+ mask.value +'&vlan='+ vlan.value +'&ipaddress=' +ipad.value;
req.setRequestHeader("Content-Length", ParamStr.length);
	req.send(ParamStr);
}

На всякий случай, вот сам php-скрипт (5 строка):
<?php
include("telnetControlClass.php");
$telnet = new PHPTelnet();
$control1 = new telnetControlClass();
	$control1->conTelnet($telnet, $_POST['ipaddress']);
 	$control1->changeConfigVLAN($telnet, $_POST['ip'], $_POST['mask'], $_POST['vlan']); 
?>

danik.js 10.07.2013 14:28

Цитата:

Сообщение от Stalin45
Почему функция сразу выдает "Succeed", не ожидая окончания php скрипта? В этом я уверен, поскольку сам скрипт после выдает:

Сделай console.log(this.readyState, this.status) да посмотри что к чему. И вкладку Сеть изучи.

Stalin45 10.07.2013 16:22

danik.js, спасибо, долго дебагал, тут вот такая странность:
Если обойтись без точек останова, то вот такая вот картина...



Статус сразу 4, а ответ сервера - 0.
Если с точкой останова в этом месте и подождать немного времени:



То связь с машиной удастся и у роутера сменится IP, но по прежнему:
Статус сразу 4, а ответ сервера - 0. В чем причина?

И очень важный для меня вопрос, при измененном IP мне теперь необходимо, чтобы страница, на которой скрипт расположен, перезагружалась с 1 другим параметром, а как это сделать??


Часовой пояс GMT +3, время: 17:48.