2011-02-02 1 views
0

Я новичок в этом и очень смущен. Простите меня, если это звучит глупо. Я хочу встроить контент в другой домен, используя теги скриптов. Я узнал, что страница, поставляющая контент, должна дать ответ json. Страница, поставляющая контент, представляет собой php-файл, который выводит его из моей базы данных. Как мне это сделать?JSON, JSONP и теги скриптов

Я пробовал простой пример json, но это не сработало, что я делаю неправильно?

test.php

<script type="text/javascript" src="http://example.com/test2.php?WrapperFunction=SomeFuncNameSpecifiedInTheRequest"> 

test2.php

<script type="text/javascript"> 
function SomeFuncNameSpecifiedInTheRequest({"data" : "<pre>Some Html</pre>"}); 
</script> 

ответ

0

function ключевое слово используется для определения новой функции. Поскольку JSONP вызывает уже существующую функцию (называемую «функцией обратного вызова»), вам не нужно это ключевое слово, и это вызывает проблемы, потому что я не верю, что это даже действительно ECMAScript.

+0

Я удалил функцию ключевого слова, но это не все еще работает! – sammville

2

Ответ HTTP для JSON-P должно быть:

  • JSON-P, а не фрагмент HTML с внедренным JSON-P
  • вызова функции, поэтому его не следует использовать ключевое слово function который определяет один
  • вызова функции, которая существует
  • имеет право типа контента

Так в test.php

<script type="text/javascript"> 
    function SomeFuncNameSpecifiedInTheRequest(data) { 
     // does stuff with the data object 
    } 
</script> 
<script type="text/javascript" src="http://example.com/test2.php?WrapperFunction=SomeFuncNameSpecifiedInTheRequest"> 

и test2.php

<?php 
    header('Content-Type: application/javascript'); 
?> 
SomeFuncNameSpecifiedInTheRequest({"data" : "<pre>Some Html</pre>"}); 
+0

Проблема в том, что я хочу, чтобы люди могли вставлять виджет, используя только тег скрипта. Как я могу сделать это без верхнего бита? – sammville

+0

Вы перестаете использовать JSON-P и просто предоставляете им динамически сгенерированный скрипт со встроенными данными. т. е. вы помещаете верхний бит (** без ** тегов сценария) в основной скрипт. – Quentin

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

  • Нет связанных вопросов^_^