Lernen Sie das Thinkphp-Framework Ajax (da ich gerade zu faul war, den Code zu posten, entschuldige ich mich bei allen Antwortenden)
Meine Idee ist: Ajax an der Rezeption auslösen -->> ->> ; Daten aus der Datenbank abrufen -->> Daten direkt an die Vordergrundverarbeitung zurückgeben
Wie kann ich Daten direkt vom Controller zurückgeben, ohne die Vorlage zu rendern?
Das Problem sollte $this->ajaxReturn();
Ich habe ajaxReturn() gelöscht und stattdessen var_dump($data) verwendet
Die von der Rezeption empfangenen Daten lauten wie folgt
Der Grund dafür ist, dass das, was gefunden wurde, nicht im JSON-Format vorlag. Was ajaxReturn() übermittelte, war nicht im JSON-Format, sodass die Rezeption array([0]=>array( {})), daher können Sie $.parseJSON(data) nicht zum Parsen verwenden
Verwenden Sie stattdessen $.each(data[0], function(i,n){}) zum Parsen von Daten
Lernen Sie das Thinkphp-Framework Ajax (da ich gerade zu faul war, den Code zu posten, entschuldige ich mich bei allen Antwortenden)
Meine Idee ist: Ajax an der Rezeption auslösen -->> ->> ; Daten aus der Datenbank abrufen -->> Daten direkt an die Vordergrundverarbeitung zurückgeben
Wie kann ich Daten direkt vom Controller zurückgeben, ohne die Vorlage zu rendern?
Das Problem sollte $this->ajaxReturn();
Ich habe ajaxReturn() gelöscht und stattdessen var_dump($data) verwendet
Die von der Rezeption empfangenen Daten lauten wie folgt
Der Grund dafür ist, dass das, was gefunden wurde, nicht im JSON-Format war. Was ajaxReturn() übermittelte, war nicht im JSON-Format, also war das, was die Rezeption empfing, array([0]=>array( {})), daher können Sie $.parseJSON(data) nicht zum Parsen verwenden
Verwenden Sie stattdessen $.each(data[0], function(i,n){}) zum Parsen von Daten
Ich verstehe nicht ganz, was Sie meinen. Ajax fordert den Hintergrund an, Daten abzurufen, und rendert sie dann über die Front-End-Template-Engine an das Frontend. Wie meinen Sie „Daten direkt vom Controller durch Template-Rendering zurückgeben?“. ”? Wird noch eine Template-Engine benötigt, um Daten zurückzugeben? Die Verwendung der Template-Engine dient dazu, das Zusammenfügen von Zeichenfolgen zu vermeiden und eine bessere Verarbeitung der von Ajax zurückgegebenen Daten zu ermöglichen. Da in Projekten häufig Ajax-Anforderungsdaten verwendet werden, können Sie die Methode selbst kapseln, wie ich sie beispielsweise verwende:
<code>protected $msg; //返回数据失败 protected function fail($mode=false,$type="json"){ $this->msg['status'] = 'failure'; if(true===$mode){ $this->reply($type); } } //返回数据成功 protected function succeed($mode=false,$type="json"){ $this->msg['status'] = 'success'; if(true===$mode){ $this->reply($type); } } //返回的数据 protected function setResult($result){ $this->msg['result'] = $result; } protected function reply($type="json"){ if($type == 'string'){ print_r($this->msg); }else{ echo json_encode($this->msg); } exit; }</code>
Verwendung:
1. Anfrage erfolgreich:
$this->setResult($data);
$this->succeed(true)
2. Anfrage fehlgeschlagen:
$this->setResult("Anfrage fehlgeschlagen") //Sie müssen nicht
$this->fail(true)
Ajax-Anfrage in js:
<code>$.post('',$data).done(function(rs){ var rs = $.parseJSON(rs); if(rs.status == 'success') { var msg = rs.result; //获取数据 } else { //请求失败的处理 } });</code>
$this->ajaxReturn($data);
war früher
$this->assian('data', $data);
$this->display();
Jetzt ist
$this->ajaxReturn($data);
Nicht schlecht! Gelernt!