如何使用PHP和jquery获取jsonp?

Posted

技术标签:

【中文标题】如何使用PHP和jquery获取jsonp?【英文标题】:How do you use PHP and jquery get jsonp? 【发布时间】:2012-01-20 21:19:56 【问题描述】:

我有这个 php

$response = 'success';
$response = json_encode($response);
echo $_GET['callback'] . '('.$response.')';

还有这个 jQuery:

$.ajax(url: "/*url*/?invite="+getinvite+"&api="+api, dataType:"jsonp", 
    success: function(response)/*do stuff*/);

在我笔记本电脑上的 XAMPP 上,它运行良好。然后当我把它放在我的服务器上时,它给了我这个错误:Undefined index: callback

为什么不让我设置$_GET['callback']?以及如何解决这个问题?

【问题讨论】:

【参考方案1】:

您没有设置一个名为“回调”的参数,因此它没有在 $_GET 变量中设置。

您可以通过以下方式修复错误消息:

$callback = "";
if(array_key_exists('callback', $_GET) == TRUE)
    $callback = $_GET['callback'];

但是我认为您可能没有误解 jQuery 中的 .ajax 调用——成功时调用的 javascript 函数不会传递给服务器;它只保存在 jQuery 中。

【讨论】:

【参考方案2】:

为了让您的 ajax 调用简单, 使用专门为 JSONP 响应设计的 getJson 方法。

http://api.jquery.com/jQuery.getJSON/

这将自动创建一个回调函数名称,该名称将作为参数传递给您的 jsonp api。 页面示例:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  
    tags: "cat",
    tagmode: "any",
    format: "json"
  ,
  function(data) 
    $.each(data.items, function(i,item)
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    );
  );

【讨论】:

以上是关于如何使用PHP和jquery获取jsonp?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 JSONP 与 jQuery 一起工作?

JSONP 原理

如何在 jQuery ajax 调用中将 JSON 响应解析为 JSONP?

❤️一个有趣小案例教你如何使用原生js使用和jquery应该如何使用jsonp❤️

❤️一个有趣小案例教你如何使用原生js使用和jquery应该如何使用jsonp❤️

使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为“jsonp”的 $.ajax)错误?