2010-07-20 2 views
1

Мне просто хотелось бы узнать, возможно ли одновременно отправлять запросы GET и POST AJAX, и если это так, как это сделать, используя объект XMLHttpRequest.Отправка запросов GET и POST AJAX в то же время

Спасибо всем за помощь: D

+0

@Aircule - Конечно, мне нужно отправить очень длинный аргумент другая php-страница через ajax. Аргумент, который я хочу отправить на страницу php, содержит данные TinyMCE, длина которых может превышать 2048 символов. – siannone

+0

Что мешает вам использовать POST? – quantumSoup

ответ

4

Отправить заявку как POST. HTTP-запрос может иметь только один метод, но ничто не мешает вам использовать параметры на URL-адрес POST.

Если вы POST до http://example.com/form?foo=bar, вы по-прежнему сможете получить доступ к foo как параметр GET.


Вот пример использования JQuery:

$.post("http://example.com/form?" + $.param({foo: "bar"}), {text: tinyMCEBody}) 

Без JQuery, который будет выглядеть следующим образом:

… 
request.open("POST","form?foo=bar",true); 
request.send("text=" + encodeURIComponent(tinyMCEBody)); 
… 
+0

Точно - это так просто, правильно ?! – TimS

+0

Я знаю это, но я читал, что URL-адрес GET не может быть длиннее 2048 символов. Поэтому я решил отправить область TinyMCE содержимое по POST – siannone

+0

Я не понимаю проблему. Можете ли вы опубликовать пример? Я обновил свой вопрос немного подробнее. – s4y

0

ли вы имеете в виду вы хотите отправить некоторые строки запроса значения вместе с POST? Наверняка это всего лишь пример добавления URL-адреса для публикации?

+0

Мне нужно послать короткие аргументы GET и еще один аргумент (который может быть очень длинным [> 2040 символов] с POST. – siannone

0

Не могли бы вы просто сделать два экземпляра XMLHttpRequest? Таким образом, вы могли бы:

Получить

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp1=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp1.onreadystatechange=function() 
    { 
    if (xmlhttp1.readyState==4 && xmlhttp1.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp1.responseText; 
    } 
    } 
xmlhttp1.open("GET","ajax_info.txt",true); 
xmlhttp1.send(); 
} 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Let AJAX change this text</h2></div> 
<button type="button" onclick="loadXMLDoc()">Change Content</button> 

</body> 
</html> 

POST

<html> 
<head> 
<script type="text/javascript"> 
function loadXMLDoc2() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp2=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp2.onreadystatechange=function() 
    { 
    if (xmlhttp2.readyState==4 && xmlhttp2.status==200) 
    { 
    document.getElementById("myDiv").innerHTML=xmlhttp2.responseText; 
    } 
    } 
//Set POST params 
var params = "lorem=ipsum&name=binny"; 

xmlhttp2.open("POST","ajax_info.txt",true); 
xmlhttp2.send(params); 
} 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Let AJAX change this text</h2></div> 
<button type="button" onclick="loadXMLDoc2()">Change Content</button> 

</body> 
</html> 

Все, что я изменил это название объекта xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP") и xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP")

Взятые из W3Schools http://www.w3schools.com/ajax/default.asp

+0

Я пробовал этот путь, но это похоже на то, что принимающая php-страница не принимает параметры POST. Фактически, php-страница неправильно распознает параметры. – siannone

+0

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

+0

Да, когда я использую только параметры GET, он работает. – siannone

Смежные вопросы