2014-04-04 116 views
0

我尝试了一些基本的例子,它不工作。我不确定我完全理解jsonp,但是我遵循了基本教程,并且在直观的层面上,我看不到任何错误。 (当然,我错过了一些东西,因此是个问题)。简单的jsonp不能与php服务器一起工作

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"]); 

恼人的是,它甚至不显示我的错误,以谷歌为。

任何人都可以帮忙解决问题吗?

+0

试试'url:'externaldomain.php?callback =',' –

+0

不是。不工作。 – user3215569

回答

0

因为我们还没有发布完整的或相关的PHP代码,我要承担它看起来像这样

$tag = mysql_real_escape_string($_GET["callback"]); 
echo $tag."("; 
// print json here 
echo ")" 

我真的不知道我该怎么jQuery的手柄JSONP请求,但什么用来做是一个新的脚本添加到看起来像DOM这样

<script> function cb(json) { alert(json); } </script> // (I) 
<script src="{url}?callback=cb"></script> // (II) 

当(II)被加载,因为我们有一个回调,然后,我们包括在DOM脚本看起来像这样

cb({ 
    // json goes here 
}) 

这几乎就像我们正在使用的称为cb的函数调用。因此实现cb(在(I)中)是自然的。该实现类似于jQuery的ajax中的success(data)函数。它用于使用和操纵请求的json

但是我注意到你正在用jsonp调用ajax调用一个POST请求。不幸的是(根据这个问题How to make a jsonp POST request that specifies contentType with jQuery?)使用JSONP进行POST是不可行的,因为实现方式。

+0

是的,除了这个声明之外,它只是在PHP中回应标签。我不明白你的功能是什么意思。你能举个例子吗? – user3215569

+0

当然,我会编辑这个问题来详述更多 – george

+0

我不是在做一个帖子。变量名称只是posData,因为我修改了前面的示例。我试图了解你如何说它应该工作..并且它没有工作.. – user3215569

-1

你不能POST使用JSONP ......它根本不能这样工作...... 所以你通常只能执行GET请求。您不能执行POST请求。

有关jsonp如何看待这篇不错文章的详细信息。 jsonp-how-does-it-work

更多clearification: 查看其它SO质疑Link1Link 2

但有变通方法是有一些限制看看这个Using PUT/POST/DELETE with JSONP and jQuery。 (对我来说没有任何作用)

+0

这并不能解答这个问题。要批评或要求作者澄清,请在其帖子下方留言。 –

+0

@DarinKolev JSON-P通过在您的文档中注入脚本标签来工作:它不是传统的XHR请求。 所以你通常只能执行GET请求。你不能执行PUT请求。 –

+0

@DarinKolev你可以看看更新的答案。 –

相关问题