2013-03-21 4 views
0

Спасибо, что нашли время, чтобы помочь мне.Избегать перенаправления ajax

Несмотря на то, что я уверен, что не может быть первым из тех, у кого есть эта проблема, я пока не нашел хорошего ответа, чтобы он туда попал.

Предположим, у меня две ASP (классические) страницы.

Target1.asp, который перенаправляет на Target2.asp с Response.Redirect (URL)

Теперь я должен получить Target1.asp с использованием методов асинхронных, и вы, возможно, уже поняли, я использую AJAX для этого.

Проблема заключается в том, когда я использую $ .ajax ('метод': 'GET', [...]) или просто $ .get ('Target1.asp') и иметь 'полный' обратный вызов заполните div с ответом, он перенаправляет всю страницу на Target2.asp вместо заполнения div.

Причина довольно проста: div действительно заполнен содержимым Target1.asp. Браузеру все равно придется перенаправлять, и поскольку div не похож на iframe вообще, вся страница перенаправляется.

Я почти уверен, что вы не можете контролировать перенаправления непосредственно из javascript (?).

Есть ли способ решить эту проблему без использования iframe?

Это то, что я пытаюсь сделать: Запрос Target1.asp с помощью метода GET с использованием ajax, перенаправление дескриптора (или что-то подобное), так что ajax запрашивает Target2.asp И затем заполняет div конечным результатом.

спасибо.

EARLY EDIT: Если вам нужен кодированный пример, я могу написать его.

+0

Вы пытаетесь запустить один asp pa ge и включить его выход в другой? – John

+0

Нет, вы можете просто использовать «include» для этого. Мне нужно избежать получения 302 заголовков перенаправления из ajax «GET», чтобы браузер не перенаправлял всю страницу, –

ответ

1

Да,

заменить response.redirect (URL) с server.execute(url) или server.transfer(URL).
Это позволит контролировать навигацию на сервере и не допускать перенаправления браузера.
Here are the differences (в .NET, но это тот же объект IIS так же идет на классический ASP)

HTH,

Erik

+0

Это было быстро ... и работало! Я никогда не думал о том, чтобы на самом деле что-то менять на стороне сервера, а не на стороне клиента. И спасибо за ссылку, это было действительно полезно. –

+0

Мы разделяем одно и то же имя, нам Эрики нужно склеивать: p –

1

Вы должны быть осторожны, чтобы отметить в вашем вопросе заголовок, который вы используя jQuery. Хотя, да, вы вызываете метод Ajax, вы не делаете его вручную и вместо этого полагаетесь на функциональность, которая может быть явной для используемой библиотеки.

Короткий ответ: нет, вы, вероятно, не можете предотвратить прозрачность переадресации, поскольку это обычно выполняется автоматически самим браузером. Более длинный ответ заключается в том, что вы, вероятно, должны попытаться сделать что-то для проверки данных, которые вы возвращаете из своего ответа ajax, чтобы убедиться, что это то, что вы ожидали. Конечно, это может быть очень зависимым, если у вас есть какой-либо механизм для этого с данными, которые вы возвращаете, или если у вас есть какой-либо контроль над ответом на стороне сервера.

Следующая статья на StackOverflow идет в гораздо более подробно:

How to prevent ajax requests to follow redirects using jQuery

+0

Это тоже правильно. Статья довольно интересная, спасибо за то, что поделились ею! Несмотря на то, что Рико уже нашел короткое и быстрое решение моей проблемы, было бы более полезно узнать об этом. +1 –

0

У вас есть удовлетворительный ответ, но вы могли бы также экспериментировать с

myurl = "http://(a full external url)" 
set xmlhttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0") 
xmlhttp.open "GET", myurl, false 
xmlhttp.send "" 
Response.write xmlhttp.responseText 
set xmlhttp = nothing 

, который я имел в виду запустив страницу asp и включая вывод, который немного отличается от заявления файла include

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