1

我很简单地尝试从http://bootcamp.jit.su/welcome/marian获取消息

这是我正在使用的代码

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <meta charset="utf-8" />
        <title>Globant :: Welcome to the HTML5 bootcamp</title>
    </head>
    <body>

    </body>
        <script type="text/javascript">
        $(document).ready(function(){
            var URL = "http://bootcamp.jit.su/Welcome/marian?callback=?";
            var request = jQuery.noConflict().ajax({
                    url: URL,
                    type: "GET",
                    dataType: 'jsonp',
                    processData: false,
                    success: function(data) {alert('hola') ;}
            });
        });

    </script>

</html>

似乎它应该可以正常工作,但我在控制台中不断收到一条错误消息:“意外的':'字符”

4

1 回答 1

1

问题是 JSONP 不是实际的 AJAX 请求。这是一种欺骗浏览器的解决方法,它通过在标题中插入脚本标签来工作。想一想,这是您支持 JSONP 的 URL

domain.com/jsonp.aspx?callback=processJSONP _

processJSONP 是您页面中已有的函数,请求返回类似于此的脚本

processJSONP( {
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
});

它使用您需要的数据调用您的函数,然后您可以做任何您想做的事情。当然,数据不必是 JSON 对象,或者您可以获得更多回调,例如

processJSONP("data1=11");
processJSONP("data2=22");
processJSONP("data3=33");

因此,如果 URL 不支持,您将无法获得所需的数据。

要在这里实现您想要的,您必须使用服务器端脚本(例如 ASP.Net、PHP 等)并通过服务器端对象(WebRequest、HttpRequest)请求内容,当您获得它时,您可以将其用作 JSONP或标准 AJAX 请求,因为它现在在您自己的域中。

希望这能清除一切。

于 2012-11-13T09:50:23.453 回答