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的主要内容,如果未能解决你的问题,请参考以下文章