简单的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 。 (对我来说什么都没有用)