2017-12-08 59 views
0

Ich habe mich gefragt, ob es möglich wäre, eine zugehörige PHP-Funktion in einer PHP-Datei durch eine Ajax-Anfrage zu laden. Natürlich sollte es möglich sein, aber wie?Wie wird die serverseitige Funktion durch eine AJAX-Anfrage geladen?

Normalerweise ruft in meiner Webapplikation jede Ajax-Funktion (auf der Clientseite) eine spezifische PHP-Datei über ihre URL auf. Zum Beispiel ruft dieser Ajax-Aufruf includes/ajax.php auf.

Die meisten meiner Anwendungen haben mehr als eine Ajax-Anfrage. Ich fand es nicht sehr effizient und besonders verwirrend, für jede Ajax-Funktion eine neue PHP-Datei zu erstellen. Eine viel bessere Lösung wäre das Speichern jeder einzelnen (serverseitigen) Response-Engine in nur einer PHP-Datei mit unterschiedlicher Funktion.

nur für das Verständnis, ich bin der Suche nach etwas wie folgt aus:

function ajaxRequest() { 

    $(".loading-overlay").show(); 
    $('#loading').show(); 
    $.ajax({ 
     url : "includes/ajax.php", 
     function: parseData(), //<--- This is not allowed 
     type : "POST", 
     data : $("#nodes").serialize(), 
     dataType: "json", 
     cache : false, 
     success: function(data) { 
      drawChart(data.chart_data); 
      currentGauge(data.current_data.current); 
      tableMaxMin(data.maxmin_data); 
      tableAvgDays(data.avg_data); 
      $('#loading').hide(); 
      $(".loading-overlay").hide(); 
     }, 
     error: function(xhr, desc, err) { 
      console.log(xhr); 
      console.log("Details: " + desc + "\nERROR: "+ err); 
     } 
    }); 
} 

Also, wie durch die Funktion ein, die spezifische Antwort-Engine laden nicht durch url?

+0

Fügen Sie eine "Aktion" Feld in der Form, auf welche das serverseitige Skript verzweigen kann. Natürlich muss es nicht "Aktion" sein, aber dies ist eine natürliche Wahl für Englischsprachige. –

+0

Sie können die Serverdatei nicht in einer einzigen Anfrage auf die Clientseite laden, da die meisten Daten vom Benutzer oder etwas anderem abhängig sind. Wie werden Sie die Daten auf die Clientseite laden, anstatt mehrere Ajaxdateien für unterschiedliche Anfragen zu erstellen PHP-Datei für alle Anfragen, die möglich sind, indem Sie action = requestname und use case in Ihrer Ajax-Datei übergeben, um die Anfrage zu identifizieren. –

+0

Also ist es notwendig, die verschiedenen Formulare auf der Serverseite in ajax.php abzufragen? – NickEat

Antwort

0

Ajax-Aufruf aus einer Datei

$.ajax({ 
    url: "includes/ajax.php?action=login", 
    method: "POST", 
    success: function(response){ 
     console.log(response); 
    } 
}) 

Ajax-Aufruf aus einer anderen Datei

$.ajax({ 
    url: "includes/ajax.php?action=userdetail", 
    method: "POST", 
    data : {'userId': 1}, 
    success: function(response){ 
     console.log(response); 
    } 
}); 

//ajax.php

<?php 

    $action = $_GET['action']; 
    extract($_POST); 
    switch($action){ 
     case 'login' : 
      //code for login 
     break; 
     case 'userdetail' : 
      //code for userdetail you can use directly $userId to access post variable as we have use `extract` method. 
     break; 
     default : 
      echo json_encode(array("message"=>"Please provide proper action")); 
     break; 
    } 
?> 
+0

Ah gut, das war einfach! Vielen Dank. – NickEat

+0

Sie sind willkommen :-) –

Verwandte Themen