Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带Sencha Touch的JSONP不工作_Php_Json_Sencha Touch - Fatal编程技术网

Php 带Sencha Touch的JSONP不工作

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',

我正在学习Sencha Touch的教程: 完美的教程,完美无瑕

但当我试图在自己的项目中重用这些代码时,我没有成功。 以下是我所做的:

在Sencha touch应用程序中,我编写了以下函数:

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行时,这才对我有效