JQuery 中解析 JSON 的回调函数

发布于 2024-10-18 05:28:37 字数 1312 浏览 4 评论 0原文

我是 JQuery 新手,也许这是一个棘手的问题。而且我的英语也不是最好的。

我在 Google App Engine 应用程序中编写了一项服务,该服务以 JSON 格式提供数据,工作正常,但我无法使用 JQuery 解析该 JSON 数据:


var url= 'myapp.appspot.com/myservice.json?someparams';
$.getJSON(url, function(json){
    alert("Success parsing JSON");  // I never reached this code 
    ....
});

在阅读了几天的帖子和教程后,我对这个 SlideShare 有了感觉: http://www.slideshare.net /andymckay/cross-domain-webmashups-with-jquery-and-google-app-engine

在阅读幻灯片 23 时,我注意到“callback=?”参数,我尝试了幻灯片 42 中的代码:


class MyJSONHandler(webapp.RequestHandler):
    def get(self):
        ## Retrieve some data from DB or MemCached
        jsonData = json.dumps(data)
        if self.request.get('callback'):
            self.response.out.write('%s(%s)' % (self.request.get('callback'), jsonData))
        else:
            self.response.out.write(jsonData)

在 JQuery 函数中:


$.getJSON(url+'&callback=?', function(json){
    alert("Success parsing JSON");  // Now i'm here !!
    ....
});

我的问题是:

为什么需要“回调”参数才能完成这项工作? '?("MyJSON": [{"a-lot" : "of-data"}])' 有什么区别?

谢谢大家。

I'm new to JQuery and maybe this is a n00b question. And also my English is not the best.

I wrote a service in my Google App Engine application who delivers data in JSON format, which works OK, but I wasn't able to parse that JSON data using JQuery:


var url= 'myapp.appspot.com/myservice.json?someparams';
$.getJSON(url, function(json){
    alert("Success parsing JSON");  // I never reached this code 
    ....
});

After a few days of reading posts and tutorials I felt into this SlideShare: http://www.slideshare.net/andymckay/cross-domain-webmashups-with-jquery-and-google-app-engine

While reading slide 23 I noticed about the "callback=?" parameter and I tried the code in slide 42:


class MyJSONHandler(webapp.RequestHandler):
    def get(self):
        ## Retrieve some data from DB or MemCached
        jsonData = json.dumps(data)
        if self.request.get('callback'):
            self.response.out.write('%s(%s)' % (self.request.get('callback'), jsonData))
        else:
            self.response.out.write(jsonData)

And in the JQuery function:


$.getJSON(url+'&callback=?', function(json){
    alert("Success parsing JSON");  // Now i'm here !!
    ....
});

My question is:

Why is the "callback" parameter necessary to make this work? What difference does the '?("MyJSON": [{"a-lot" : "of-data"}])' makes??

Thanks you all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

够运 2024-10-25 05:28:37

callback 参数用于实现 JSONP

jQuery 的 getJSON 方法创建一个

与普通的 AJAX 请求不同,JSONP 请求可以跨域发出。

The callback parameter is used to implement JSONP.

jQuery's getJSON method creates a <script> tag that point to the URL you give it.
The URL is expected to return a call to the function specified in the callback parameter, passing the data as a parameter.

Unlike normal AJAX requests, JSONP requests can be made across domains.

唠甜嗑 2024-10-25 05:28:37

如果您使用 AJAX 从另一个域访问您的服务,浏览器将不允许这样做。使用此技术可以通过动态嵌入脚本标记来解决此问题,并将 src 属性设置为请求的 URL,并且脚本主体调用传入的函数名称,并向其传递您的数据。

这是该过程的一个很好的解释: http://en.wikipedia.org/wiki/JSON#JSONP

If you are accessing your service from another domain using AJAX, the browser won't allow that. Using this technique gets around it by dynamically embedding a script tag with the src attribute set to the requested URL, and the body of the script calls your function name passed in, passing it your data.

Here's a great explanation of the process: http://en.wikipedia.org/wiki/JSON#JSONP

哭了丶谁疼 2024-10-25 05:28:37

它称为 JSONP。

您可以在这里查看:什么是 JSONP?

希望它有所帮助

It's called JSONP.

You can look here: What is JSONP all about?

Hope it helps

生来就爱笑 2024-10-25 05:28:37

该技术称为 JSONP:带有填充的 JSON,并使用规避同源政策

The technique is called JSONP: JSON with Padding and is used to circumvent the same-origin policy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文