简单的jsonp无法使用php服务器
我尝试了一些基本的例子,但它没有用。 我不确定我是否完全理解jsonp,但是我遵循基本教程并且在直观的层面上,我看不出有什么不对。 (当然,我错过了一些东西,因此问题)。
JavaScript代码:
postData = $(this).serialize(); console.log(postData); $.ajax({ data: postData, url: 'externaldomain.php', dataType: 'jsonp', success: function(data){ console.log(data); alert('Your comment was successfully added'); }, error: function(){ console.log(data); alert('There was an error adding your comment'); } });
PHP代码:
$tag = mysql_real_escape_string($_GET["callback"]);
令人讨厌的部分是,它甚至没有向我显示错误。
任何人都可以帮忙解决问题吗?
由于您尚未发布完整或相关的PHP代码,我将假设它看起来像这样
$tag = mysql_real_escape_string($_GET["callback"]); echo $tag."("; // print json here echo ")"
我不确定jquery如何处理jsonp请求,但我以前做的是向DOM添加一个新的脚本标记,看起来像这样
// (I) // (II)
当加载(II)时,因为我们有一个回调,那么我们在DOM中包含的脚本就像这样
cb({ // json goes here })
这几乎就像是对我们正在使用的一些名为cb
的函数的函数调用。 因此,实现cb
(在(I)中)是很自然的。 该实现类似于jQuery的ajax中的success(data)
函数。 它用于使用和操作请求的json
但是我注意到你正在使用jsonp在ajax调用中执行POST请求。 不幸的是(根据这个问题如何使用jQuery指定contentType的jsonp POST请求? )使用JSONP进行POST是不可行的,因为实现的目的。
你不能使用JSONP
POST
…它根本不起作用……所以你通常只能执行GET请求。 您无法执行POST请求。
有关jsonp工作如何看待这篇好文章的详细信息。 JSONP知识,确实,它工作
有关更多说明,请参阅其他SO问题Link1 Link 2
但是有一些方法可以解决这个问题,看看使用PUT / POST / DELETE和JSONP以及jQuery 。 (对我来说什么都没有用)