JSON,JSONP和脚本标记

时间:2011-02-02 14:17:47

标签: javascript json jsonp

我是新手,真的很困惑。如果它听起来很愚蠢,请原谅我。我想使用脚本标记将内容嵌入到另一个域中。我了解到提供内容的页面必须给出json答案。提供内容的页面是一个php文件,它从我的数据库中提取它。我怎么去这个?

我尝试了一个简单的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>

2 个答案:

答案 0 :(得分:2)

JSON-P的HTTP响应应为:

  • JSON-P,不是嵌入了JSON-P的HTML片段
  • 调用函数,因此不应使用定义一个
  • 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>"});

答案 1 :(得分:0)

function关键字用于定义新功能。由于JSONP调用已经存在的函数(称为“回调函数”),因此您不需要此关键字,并且它会导致问题,因为我认为这甚至不是有效的ECMAScript。