Php Yii2-JSONP响应不返回任何内容(空白)并且不工作,但是JSON会
我正在使用Yii2,为了它的价值,我知道基本知识,并且已经编程一段时间了。这可能是由于缺乏这方面的文档(yii2jsonp和响应)。我发现的只是返回JSON响应的示例,没有一个显示JSONP响应 我从这里开始,Yii食谱: 它只显示JSON和XML的示例,而不显示JSONP。它声明使用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”、“
格式\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数据填充映射,但如果必须的话,我可能会扩展它