2010-11-24 1 views
3

У меня есть форма, которая выводит одну простую линию HTML <a href="link">A LINK</a>Получить HTML через домены с помощью JQuery и JSONP

я могу получить доступ к процессу непосредственно с данными, прилагаемыми к URL, как http://site.com/form.asp?sample=100

Поскольку это происходит через домены (в поддомен) Я пытаюсь сделать это с помощью JSONP. Я сначала попробовал его с datatype json, но я все еще получал запрет на 403. Вот что я пытаюсь использовать с JSONP, но это все перепутано и возвращает ошибку с этим добавленным к нему% 5Bobject% 20Object% 5D. Я думаю, это проблема с тем, как я пытаюсь добавить данные в URL?

$j.getJSON({ 
     type: 'POST', 
     url: 'http://site.com/form.asp', 
     data: 'order=' + ordervalue, 
     contentType: "application/json; charset=utf-8", 
     dataType: "jsonp", 
     success: function(response) { 
      alert(response); 
     } 
    }); 

ответ

7

JSONP не работает, как это, вы не посылаете JSON вообще, вы отправляете HTML.

JSONP строго запрос GET (сделанный путем создания <script> тега) , вы не можете POST кросс-домен и получить результат обратно ... это просто не работает. Как работает JSONP, в основном это добавляет его на вашу страницу:

<script type="text/javascript" src="http://site.com/form.asp?order=something&callback=myFunc"></script> 

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

myFunc({ "key": "value"...data, etc... }); 

Это не работает для извлечения HTML, он просто бросает синтаксическую ошибку, это ограничение очень преднамеренное, а часть защитных блоков на месте (часть same origin policy).

+0

спасибо за объяснения Ник. У меня был тип, заданный как «GET», но у меня была такая же проблема, поэтому я подумал, что попробую пост. У вас есть рекомендация о том, как захватить html, который напечатан с URL-адреса со свойствами в домене? Я был близок с помощью json, но получил 403, и я не знаю, насколько я очень близок с jsonp. – Zac 2010-11-24 09:17:19

1

Вы можете по-прежнему пост/получить междоменное на клиенте:

flyJSONP/YQL
jankyPOST/PostMessage/contentWindow
CORS