Heim > Backend-Entwicklung > PHP-Tutorial > Das Ajax-Implementierungsprinzip von thinkphp

Das Ajax-Implementierungsprinzip von thinkphp

WBOY
Freigeben: 2016-08-04 09:21:24
Original
1146 Leute haben es durchsucht

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 Ajax-Implementierungsprinzip von thinkphp

Das Ajax-Implementierungsprinzip von thinkphp

Das Ajax-Implementierungsprinzip von thinkphp

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
Das Ajax-Implementierungsprinzip von thinkphp

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
Das Ajax-Implementierungsprinzip von thinkphp

Antwortinhalt:

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 Ajax-Implementierungsprinzip von thinkphp

Das Ajax-Implementierungsprinzip von thinkphp

Das Ajax-Implementierungsprinzip von thinkphp

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
Das Ajax-Implementierungsprinzip von thinkphp

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
Das Ajax-Implementierungsprinzip von thinkphp

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>
Nach dem Login kopieren

Verwendung:
1. Anfrage erfolgreich:
$this->setResult($data);
$this->succeed(true)
2. Anfrage fehlgeschlagen:
$this->setResult("Anfrage fehlgeschlagen") //Sie müssen nicht
$this->fail(true)

schreiben

Ajax-Anfrage in js:

<code>$.post('',$data).done(function(rs){
        var rs = $.parseJSON(rs);
        if(rs.status == 'success') {
          var msg = rs.result;   //获取数据
         
        } else {
          //请求失败的处理
        }
      });</code>
Nach dem Login kopieren

$this->ajaxReturn($data);

war früher
$this->assian('data', $data);
$this->display();

Jetzt ist
$this->ajaxReturn($data);

Nicht schlecht! Gelernt!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage