Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 Yii2-JSONP响应不返回任何内容(空白)并且不工作,但是JSON会_Php_Json_Yii_Jsonp_Yii2 - Fatal编程技术网

Php Yii2-JSONP响应不返回任何内容(空白)并且不工作,但是JSON会

Php Yii2-JSONP响应不返回任何内容(空白)并且不工作,但是JSON会,php,json,yii,jsonp,yii2,Php,Json,Yii,Jsonp,Yii2,我正在使用Yii2,为了它的价值,我知道基本知识,并且已经编程一段时间了。这可能是由于缺乏这方面的文档(yii2jsonp和响应)。我发现的只是返回JSON响应的示例,没有一个显示JSONP响应 我从这里开始,Yii食谱: 它只显示JSON和XML的示例,而不显示JSONP。它声明使用格式\u JSONP。因此,我将JSON示例与JSONP交换。转到URL,什么都没有,只是一个空白的白色页面。所以我对数据进行了var_dump(),是的,数据就在那里 因此,在谷歌搜索“yii2jsonp”、“

我正在使用Yii2,为了它的价值,我知道基本知识,并且已经编程一段时间了。这可能是由于缺乏这方面的文档(yii2jsonp和响应)。我发现的只是返回JSON响应的示例,没有一个显示JSONP响应

我从这里开始,Yii食谱:

它只显示JSON和XML的示例,而不显示JSONP。它声明使用
格式\u JSONP
。因此,我将JSON示例与JSONP交换。转到URL,什么都没有,只是一个空白的白色页面。所以我对数据进行了var_dump(),是的,数据就在那里

因此,在谷歌搜索“yii2jsonp”、“yii2jsonp错误”、“yii2jsonp不工作”以及其他一些变体之后,我什么也没找到。。我在这里搜索了这么多,只有2个问题出现在“Yii2JSONP”中,都没有任何帮助

我继续读Yii2文档。 在这里: 同样,除了
FORMAT\u JSONP
是一种有效的格式类型之外,没有任何JSONP示例,也没有太多讨论它

我可以很好地使用JSON,但是我试图用JSONP响应中的数据填充Google地图,因此我需要JSONP

这是我的控制器:

public function actionMapapi()
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSONP;
    $data = User::find()->all();

    return $data;
}
public function actionMapapi()
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSONP;
    $callback = 'mapApiCallback';
    $data = User::find()->all();

    return ['callback' => $callback, 'data' => $data];
}
当我转到URL时,它只是白色的。我可以在声明响应->格式之前放置一个骰子('here'),它会在页面上打印“here”。因此,控制器正在被正常访问。如果我将
FORMAT\u JSON
FORMAT\u JSON
交换,它工作得很好,只是不是JSON


在Yi2文档中,似乎在如何准确处理JSONP方面存在差距,并且在网上很少讨论它(我可能会找到)。

您需要返回一个数组,该数组定义了您的
回调
数据
。这是相当隐蔽的,这里提到:

它说:

$useJsonp是否使用JSONP响应格式。如果为true,则响应数据必须是由数据和回调成员组成的数组。后者应该是JavaScript函数名,而前者将作为参数传递给此函数

我几乎找不到任何例子,只是尝试了显而易见的:

return ['data' => $arrayData, 'callback' => 'myCallback'];
成功了

我的控制器的完整来源:

public function actionMapapi()
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSONP;
    $data = User::find()->all();

    return $data;
}
public function actionMapapi()
{
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSONP;
    $callback = 'mapApiCallback';
    $data = User::find()->all();

    return ['callback' => $callback, 'data' => $data];
}
注意:不,我没有用用户填充我的地图。这只是一个例子,数据可以很好地打印在屏幕上。我仍然需要对它进行编码,才能将我的地图数据传递到我的谷歌地图

如果有人感兴趣,我将使用:

我不知道它目前是否支持用JSONP数据填充映射,但如果必须的话,我可能会扩展它