Php 带Sencha Touch的JSONP不工作
我正在学习Sencha Touch的教程: 完美的教程,完美无瑕 但当我试图在自己的项目中重用这些代码时,我没有成功。 以下是我所做的: 在Sencha touch应用程序中,我编写了以下函数:Php 带Sencha Touch的JSONP不工作,php,json,sencha-touch,Php,Json,Sencha Touch,我正在学习Sencha Touch的教程: 完美的教程,完美无瑕 但当我试图在自己的项目中重用这些代码时,我没有成功。 以下是我所做的: 在Sencha touch应用程序中,我编写了以下函数: showContacts = function() { Ext.util.JSONP.request({ url: 'http://www.hotcoffee.be/check-relations/index.php/json/contactpersonen',
showContacts = function()
{
Ext.util.JSONP.request({
url: 'http://www.hotcoffee.be/check-relations/index.php/json/contactpersonen',
callbackKey: "callback",
params: {
unique: Math.random()
},
callback: function(data)
{
var contacts = data.results;
nameOfPanel.update(contacts);
}
});
}
首先,我用PHP(codeigniter)编写了自己的JSON文件:
另一件事是,我可以确保面板和tpl编写得很好,因为使用硬编码的测试数据,它确实可以工作。问题是只加载JSON文件
有人知道怎么处理吗?
多谢各位 我在这里回答了一个类似的问题:。它是特定于Rails的,但这个概念仍然适用 詹姆斯·皮尔斯基本上是正确的。返回的内容需要包装在标记和回调函数中。这将在页面上插入代码并运行脚本,其效果是调用您提供的函数
$response = "<script type='text/javascript'>";
$response .= $_GET['callback'] . "(" . json_encode($row) . ")";
$response .= "</script>";
$this->output->set_content_type('application/json')->set_output($response);
$response=”“;
$response.=$\u获取['callback']。“(“.json_encode($row)。”)”;
$response.=”;
$this->output->set\u content\u type('application/json')->set\u output($response);
我在这里回答了一个类似的问题:。它是特定于Rails的,但这个概念仍然适用
詹姆斯·皮尔斯基本上是正确的。返回的内容需要包装在标记和回调函数中。这将在页面上插入代码并运行脚本,其效果是调用您提供的函数
$response = "<script type='text/javascript'>";
$response .= $_GET['callback'] . "(" . json_encode($row) . ")";
$response .= "</script>";
$this->output->set_content_type('application/json')->set_output($response);
$response=”“;
$response.=$\u获取['callback']。“(“.json_encode($row)。”)”;
$response.=”;
$this->output->set\u content\u type('application/json')->set\u output($response);
这是php服务器的示例:
$callback = $_REQUEST['callback'];
// Create the output object.
$output = array('a' => 'Apple', 'b' => 'Banana');
//start output
if ($callback) {
header('Content-Type: text/javascript');
echo $callback . '(' . json_encode($output) . ');';
} else {
header('Content-Type: application/x-json');
echo json_encode($output);
}
当您在chrome或firefox中调试它时,您会发现响应与Ext.util.JSONP.callback({})
这就是jsonp“从与运行页面的原始域不同的域中的页面检索数据”并将数据提供给运行页面的方式 这是php服务器的示例:
$callback = $_REQUEST['callback'];
// Create the output object.
$output = array('a' => 'Apple', 'b' => 'Banana');
//start output
if ($callback) {
header('Content-Type: text/javascript');
echo $callback . '(' . json_encode($output) . ');';
} else {
header('Content-Type: application/x-json');
echo json_encode($output);
}
当您在chrome或firefox中调试它时,您会发现响应与Ext.util.JSONP.callback({})
这就是jsonp“从与运行页面的原始域不同的域中的页面检索数据”并将数据提供给运行页面的方式 JSONP的工作原理是将JSON包装在回调函数中(这样它就可以包含在标记中并跨不同的源域工作)。这里只返回原始JSON。如果它在同一个域上,您可以只使用JSON。这个应用程序和JSON源程序在同一个域上吗?好吧,现在JSON文件在同一个域上,但将来我想从另一个主机上获取它。因此,我想我希望从一开始就让它在另一个域中工作。JSONP通过在回调函数中包装JSON来工作(这样它就可以包含在标记中,并且可以跨不同的源域工作)。这里只返回原始JSON。如果它在同一个域上,您可以只使用JSON。这个应用程序和JSON源程序在同一个域上吗?好吧,现在JSON文件在同一个域上,但将来我想从另一个主机上获取它。所以我想我想从一开始就让它在另一个领域工作。Thnx詹姆斯·皮尔斯和米斯塔格罗夫斯!两者都是正确的,我用James Pearce的info.FWIW找到了解决方案,出于某种原因,只有在我删除
和
--即不要使用上述第1行和第3行时,这才对我有效!两者都是正确的,我用James Pearce的info.FWIW找到了解决方案,出于某种原因,只有在我删除
和
--即不使用上面的第1行和第3行时,这才对我有效