Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
3 / 3 / 3
Регистрация: 23.01.2014
Сообщений: 171
1

Что то не так с XMLHTTPRequest

10.07.2014, 09:53. Показов 631. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему то не распознает пост запрос...

Когда делаю у себя и пишу в конце так
Javascript
1
2
    reqString1.open('POST', '<?=baseurl?>'+link, true);
    reqString1.send(reqSt1);
то работает, к файлу php обращается но не отображает пост запрос. (Файл php отображает просто текст для проверки и полученный методом пост текст для проверки пост)

Если делаю так:
Javascript
1
2
3
4
    reqString1.reqString1.open('POST', '<?=baseurl?>'+link, true);
    reqString1.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    reqString1.req.setRequestHeader("Content-Length", reqSt1.length);
    reqString1.reqString1.req.send(reqSt1);
то даже запрос не идет, ошибку в javascript...

Код
TypeError: reqString1.req is undefined
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
 
 
<form onsubmit="return false" enctype=multipart/form-data>
    <input id="sds" type=text />
    <button class="btnblue"onclick="getXmlDelCli()">Send</button>
 
    <div class="textrez" id="divResultDel">&nbsp;</div>
</form>
 
<script>
    function getXmlDelCli(){
        var link = 'http://suka.sasuka.ru/index.php'; //ссылка на исполняемый файл php
        var divid = 'divResultDel'; //ID блока в котором вывести результат
        var idRez = 'null'; //Блок в котором получен результат
        var textRez = 'null'; //Результат условия
        var EmId = 'null'; //ИД селекта
        var iFadd = 'cltbody'; //ИД для обновления
        var qLink = 'null'; //ссылка на файл исполнения
 
        
        var val1 = document.getElementById('sds').value;
        var sVl ='qqq='+val1;
        getXml2St1(sVl,divid,link,idRez,textRez,EmId,iFadd,qLink);
    }
</script>
 
 
<script>
function getXmlHttpRequest(){
    if(window.XMLHttpRequest)
        return new XMLHttpRequest();
    else
        return null;
}
function getXml2St1(reqSt1,divid,link,idRez,textRez,EmId,iFadd,qLink){
    var reqString1 = getXmlHttpRequest();
    reqString1.onreadystatechange = function(){
            if(reqString1.readyState != 4) return;{
                var resultCheck = document.getElementById(divid);
                resultCheck.firstChild.nodeValue = reqString1.responseText;
                resultCheck.innerHTML = reqString1.responseText;
                if(idRez!='null' & textRez!='null'){
                    rezZ = document.getElementById(idRez).innerHTML;
                    if(rezZ==textRez){
                        setTimeout('closeMessage()', 1000)
                        if(iFadd!='null'){
                            WqueRY(iFadd,qLink);
                        }
                    }
                }
            }
        };
 
    reqString1.open('POST', link, true);
    reqString1.send(reqSt1);
    
    //reqString1.open('POST', '<?=baseurl?>'+link, true);
    //req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    //req.setRequestHeader("Content-Length", reqSt1.length);
    //reqString1.req.send(reqSt1);
}
 
</script>
  </body>
</html>
Ссылка на песочницу с этим кодом http://learn.javascript.ru/play/qAfXCb

Вот в песочнице при работе первого варианта, запрос к файлу идет.
Что то не так с XMLHTTPRequest


Где я накосячил?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2014, 09:53
Ответы с готовыми решениями:

1С И JavaScript. XMLHttpRequest+ Xml. Что не хватает?
Создали веб сервис на 1С. Все хорошо. Установили SoapUI 5.2.1 Там проверяем, создаем новое...

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при...

И так, что не так с моим запросом на добавление записи в таблицу?
$sql = 'INSERT INTO product ' . '(name, code, price, category_id, brand,...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float...

10
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
10.07.2014, 12:39 2
При отправки методом POST нужно установить заголовок
Javascript
1
reqString1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
И закодировать данные для отправки функцией encodeURIComponent

Добавлено через 5 минут
TypeError: reqString1.req is undefined
Вы не создали объект XmlHttp.
Чтобы его создать сделайте такую функцию:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function getXmlHttp() {
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
 
var sEditText = "";
А потом создайте объект:
Javascript
1
reqString1 = getXmlHttp();
Добавлено через 5 минут
http://javascript.ru/ajax/intr... realizacii
0
3 / 3 / 3
Регистрация: 23.01.2014
Сообщений: 171
10.07.2014, 13:15  [ТС] 3
Цитата Сообщение от psfdek Посмотреть сообщение
function getXmlHttpRequest(){ if(window.XMLHttpRequest) return new XMLHttpRequest(); else return null; }
Как это не создал то вот же он...
У меня запрос файлу делается же, так что объект создан и с GET все работает. Но мне нужно файла отправку сделать и методом пост у меня пост запрос в php файл не передается. В моем вопросе я именно и спросил как же правильно в моем примере заголовок указать:

Делаю так без заголовка запрос работает норм кроме того что не передает ПОСТ запросы, но ответ получает:
Javascript
1
2
    reqString1.open('POST', '<?=baseurl?>'+link, true);
    reqString1.send(reqSt1);

А если делаю с заголовками так:
Javascript
1
2
3
4
    reqString1.open('POST', '<?=baseurl?>'+link, true);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    req.setRequestHeader("Content-Length", reqSt1.length);
    reqString1.req.send(reqSt1);
То скрипт не выполняется. Вопрос: почему?
0
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
10.07.2014, 13:38 4
Ты определись! Или req или reqString1... они одинаковые должны быть...

Javascript
1
2
3
4
    reqString1.open('POST', '<?=baseurl?>'+link, true);
    reqString1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    reqString1.setRequestHeader("Content-Length", reqSt1.length); // указывать не обязательно (он вставляется автоматически)
    reqString1.send(reqSt1);
А у тебя что-то там каша какая-то с этими req*...
0
3 / 3 / 3
Регистрация: 23.01.2014
Сообщений: 171
10.07.2014, 14:03  [ТС] 5
У меня это так и написано, просто в примере почему то удалилось случайно...
Javascript
1
2
3
4
   reqString1.open('POST', '<?=baseurl?>'+link, true);
    reqString1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    reqString1.setRequestHeader("Content-Length", reqSt1.length); // указывать не обязательно (он вставляется автоматически)
    reqString1.send(reqSt1);
0
Модератор
771 / 352 / 142
Регистрация: 17.07.2013
Сообщений: 992
10.07.2014, 14:58 6
psfdek, покажи как ты создаешь переменную reqString1, а то у тебя код начинается с открытия запроса.
0
3 / 3 / 3
Регистрация: 23.01.2014
Сообщений: 171
10.07.2014, 15:53  [ТС] 7
в коде приведенном в самом начале var reqString1 = getXmlHttpRequest();

Повторюсь что запрос этот с GET работает, и когда я его в POST переделал то он так:
Javascript
1
2
    reqString1.open('POST', '<?=baseurl?>'+link, true);
    reqString1.send(reqSt1);
Работает.. т.е. статус 200 приходит от файла php, но POST не передается php файлу.

А если вместо первого пишу
Javascript
1
2
3
4
    reqString1.open('POST', '<?=baseurl?>'+link, true);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    req.setRequestHeader("Content-Length", reqSt1.length);
    reqString1.req.send(reqSt1);
То скрипт не выполняется.....
0
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
10.07.2014, 16:18 8
Вот ты видишь! опять!
Опять надо писать reqString1, а ты пишешь req...
Вот, попробуй так (скопируй и вставь):
Javascript
1
2
3
4
    reqString1.open('POST', '<?=baseurl?>'+link, true);
    reqString1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    reqString1.setRequestHeader("Content-Length", reqSt1.length);
    reqString1.send(encodeURIComponent(reqSt1));
1
3 / 3 / 3
Регистрация: 23.01.2014
Сообщений: 171
11.07.2014, 14:58  [ТС] 9
Да я что то при переделывании req не убрал, теперь норм всё.

Теперь возник вопрос как передать файл с помощью XMLHTTPRequest методом пост, подскажите пожалуйста.
0
669 / 640 / 335
Регистрация: 26.04.2014
Сообщений: 2,122
11.07.2014, 15:07 10
Цитата Сообщение от psfdek Посмотреть сообщение
Да я что то при переделывании req не убрал, теперь норм всё.
Ну наконец то...

Цитата Сообщение от psfdek Посмотреть сообщение
Теперь возник вопрос как передать файл с помощью XMLHTTPRequest методом пост, подскажите пожалуйста.
Файлы через XmlHttp передать нельзя. Вместо этого используют скрытый iframe в котором отправляют форму с файлом...
Есть ещё XmlHttp 2 (HTML5) там как-то можно, но этот способ поддерживают не все браузеры...
0
3 / 3 / 3
Регистрация: 23.01.2014
Сообщений: 171
15.07.2014, 12:45  [ТС] 11
Нашел способ с помощью Jquery загрузку делать.
Прикрепил готовый пример, в нем у меня только файлы csv загружать можно, если кому то нужны другие то поменяйте просто MIME TYPE в условиях if.
Вложения
Тип файла: zip ajaxupload.zip (1.8 Кб, 5 просмотров)
0
15.07.2014, 12:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2014, 12:45
Помогаю со студенческими работами здесь

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от...

сегодня так можно сказать праздник так что...
простите меня за все пожалуйста!!!

Что-то не то с Майкрсофт визуал студио 2010 или я что-то не так делаю
Дело в том что при запуске вот этой программы: #include &lt;iostream&gt; using namespace std; int main...

Посмотрите конфиг. скажите что не так или что стоит заменить?
http://kostroma.dns-shop.ru/catalog/cart/?cart_items=138239-1,143321-1,126014-1,157910-1,158182-1,12...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru