Also, wenn ich versuche, ein Array von Datenbank-Objekt zu meinem AJAX und parse es, wird es in einem Array von Zeichen. Ich meine, mein json_encode
Ergebnis ist [{'id':38, 'first_name':jana}]
und wenn ich versuche, es zu Array in der Ajax zu analysieren, was geschehen ist, und Array von Zeichen - ['[', '{', ''']
usw. Das ist mein Ajax:PHP Rückgabe Array von Datenbank-Objekt zu AJAX Yii2
function searchInput() {
var $content = $('.jobboard-quick-search-form').serialize();
$.ajax({
url : '/admin/site/search',
method : "GET",
data : $content,
success : function (data) {
var arr = JSON.parse(data);
console.log(arr);
}
});
}
und meine Aktion:
public function actionSearch()
{
$lang = \frontend\models\Lang::getCurrent();
$pageSize = 100;
if(\Yii::$app->request->isAjax)
{
$search = \Yii::$app->request->get('search-label');
$town = \Yii::$app->request->get('towns-list');
$startsWith = '%'.$search;
$between = '%'.$search.'%';
$endsWith = $search.'%';
$joinDoctors = "SELECT `doctor`.`id`, `doctorLang`.`first_name`, `doctorLang`.`second_name`, `doctorLang`.`city`, `doctorLang`.`hospital_name`
FROM `doctor` LEFT JOIN `doctorLang` ON `doctor`.`id`=`doctorLang`.`doc_id`
WHERE `doctorLang`.`city`='$town'
AND `doctorLang`.`language`='$lang->url'
AND `doctor`.`active`=1
AND (`doctorLang`.`first_name` LIKE '$startsWith'
OR `doctorLang`.`first_name` LIKE '$between'
OR `doctorLang`.`first_name` LIKE '$endsWith'
OR `doctorLang`.`second_name` LIKE '$startsWith'
OR `doctorLang`.`second_name` LIKE '$between'
OR `doctorLang`.`second_name` LIKE '$endsWith'
OR `doctorLang`.`third_name` LIKE '$startsWith'
OR `doctorLang`.`third_name` LIKE '$between'
OR `doctorLang`.`third_name` LIKE '$endsWith')";
$doctor = \Yii::$app->db->createCommand($joinDoctors)->queryAll();
$joinHospitals = "SELECT `hospital`.`id`, `hospitalLang`.`title`, `hospitalLang`.`address`, `hospitalLang`.`description`
FROM `hospital` LEFT JOIN `hospitalLang` ON `hospital`.`id`=`hospitalLang`.`hospital_id`
WHERE `hospitalLang`.`city`='$town'
AND `hospitalLang`.`language`='$lang->url'
AND `hospital`.`active`=1
AND (`hospitalLang`.`title` LIKE '$startsWith'
OR `hospitalLang`.`title` LIKE '$between'
OR `hospitalLang`.`title` LIKE '$endsWith')";
return json_encode($doctor);
}
}
Vielen Dank im Voraus!
Sie den Wert, den Sie als Nummer – scaisEdge
Zunächst müssen werfen sollte - Code für SQL-Injection geöffnet ist, Verwenden Sie [Yii 2 Query Builder] (http://www.yiiframework.com/doc-2.0/guide-db-query-builder.html). Zweitens - haben Sie versucht, 'JSON.parse (data);' zu entfernen und 'data' direkt auszugeben? Es ist sehr wahrscheinlich, dass JSON bereits analysiert wurde. – Bizley
Ja ich habe aber nichts. –