jquery $.ajax jsonp

Posted

技术标签:

【中文标题】jquery $.ajax jsonp【英文标题】: 【发布时间】:2011-11-04 09:08:03 【问题描述】:
$.ajax(
    type : "GET",
    dataType : "jsonp",
    url : '/',
    data : 
    success: function(obj)

    
);

如何使用 $.ajax dataType: jsonp 跨域发布数据?

【问题讨论】:

既然你没有说明你遇到什么样的错误,我可以指出这个:api.jquery.com/jQuery.getJSON 应该做你想做的事 - 但它只是你所拥有的东西的简写写的。 发布数据??你能澄清一下吗.. 查看文档:api.jquery.com/jQuery.getJSON 你需要在你的 url 中指定一个回调函数。 他要跨域发布POST请求 IE8 使用 XDomainRequest 但用户可能是 ie6 blogs.msdn.com/b/ieinte... 【参考方案1】:

回答您的问题,而不是像上面那样将您发送到另一个链接:

JS

$.ajax(
     type : "GET",
     dataType : "jsonp",
     url : "http://domainname.com/json.php?callback=?", // ?callback=?
     success: function(data)
           // do stuff with data
     
);

PHP 可能如下所示:

<?php
include('connect.php');
$sql = "SELECT id, name, items FROM tablename ORDER BY id ASC"; 
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))

    $rows[] = array(
            "id" => $row['id'], 
            "name" => $row['name'], 
            "items" => $row['items']);

$json = json_encode($rows);
$callback = $_GET['callback'];
echo $callback.'('. $json . ')';
?>

dataType 设置为jsonp 将允许jQuery 自动在url 的末尾添加一个额外的?callback=? 以指定回调。如果您在上面指定自己的名称,它将使用您传递的 callback 名称。如果您需要指定 json 回调名称,请使用 jsonpCallback 属性。或者,您可以将作为参数添加到数据属性。如果您需要更多信息,请访问 jQuery API Ajax:http://api.jquery.com/jQuery.ajax/。

不要忘记在结果字符串上添加;

我希望这会有所帮助!

【讨论】:

非常感谢!在看了十几个例子之后,这个终于让我的代码工作了!【参考方案2】:

使用简单的 jsonp 是不可能的。阅读this

【讨论】:

不确定这有什么帮助?它没有提供解决方案,只是说你做不到。

以上是关于jquery $.ajax jsonp的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 侦听未使用 jQuery.AJAX 加载的 AJAX 加载

Ajax_使用 jQuery 实现Ajax

jQuery学习之jQuery Ajax用法详解

jquery的ajax

jQuery jQuery对Ajax的使用

jQuery jQuery对Ajax的使用