0

我真的在这里撞了一天多,我正在尝试发送请求并从另一个站点获得响应。我正在用 jsonp 做这件事(原因很明显)。但响应不是 JavaScript 函数定义,所以它一直失败。

这个星球上的任何人都可以帮助我以正确的方式得到回应。

我再次附上了我写的代码:因为响应不在 json 中,所以它不起作用。(尝试自己运行它,你会看到)。

有什么建议么?

<script>
function test()
{
  $.ajax({
      dataType: 'jsonp',
      jsonp: 'jsonp_callback',
      url: 'https://www.facebook.com/ajax/typeahead/first_degree.php?viewer=1000009843914&token=1-1&filter[0]=user&options[0]=pending_request&lazy=1&token=v7&stale_ok=1&__a=1&__user=1000009843914&    viewer=1000009843914',
  });
}
function jsonp_callback(data)
{

 var val=JSON.stringify(data);
 myString = val.slice( 11 );
 $('#container').html(myString);

/*for (;;);*/
 }
 test();
</script>
4

1 回答 1

0

必须对服务器进行编程以在其脚本文件中包含 JSONP 回调。如果它只知道返回 JSON,那么当动态脚本标签插入页面时,它不会有任何效果,因为 JSON 最多可以提供一个对象——但它不会去任何地方,除非同一个文件调用该函数。通过这种方式,它与 Ajax 不同,因为动态插入的脚本标记只有在知道调用您的函数之一时才能与您自己的代码交互。举个例子,它可能会返回:

jsonp_callback({facebooKData:[...]});

您应该调查 Facebook API 如何支持 JSONP(而不仅仅是 JSON),无论您尝试做什么。通常,API 将接受一个“回调”变量来确定它应该使用哪个回调函数(哪个 jQuery 为您处理)。

于 2012-08-02T13:59:48.007 回答