【问题标题】:jquery $.ajax jsonpjquery $.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...

标签: jquery ajax cross-domain jsonp


【解决方案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

【讨论】:

  • 不确定这有什么帮助?它没有提供解决方案,只是说你做不到。
猜你喜欢
  • 1970-01-01
  • 2013-04-04
  • 2016-12-24
  • 2012-12-26
  • 2012-02-23
  • 2011-09-13
  • 1970-01-01
  • 2011-12-10
  • 2018-03-19
相关资源
最近更新 更多