Ich werde versuchen, die Frage ein wenig mehr zu vereinfachen. In index.blade.php habe ich diesen AJAX-Anruf, der an meinen Controller weitergeleitet wird. Ich habe dem Select-Element einen "Namen" hinzugefügt, so dass die Formularserialisierung einfacher ist und ich das Formular weggelassen habe. Es POSTEN mit Parametern:Erstellen einer jQuery AJAX-Anfrage von Laravel View
command
_token
value1
value2
$("#apiselection").submit(function(event) {
alert("Handler for .submit() called.");
event.preventDefault();
var formParams = $("#apiselection").serialize();
var data = formParams;
$.post("dicomgrid", data, function(result){
alert(result);
$("#APIresults").html(result);
});
});
In routes.php Ich habe dies:
Route::post('dicomgrid', '[email protected]');
, die von dem Contoller behandelt wird, die jetzt dies ist. Ich musste Illuminate \ Http \ Request hinzufügen, damit es funktioniert.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DicomGridController extends AppBaseController
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function apiCall(Request $request) {
if ($request->input('command') == "Login") {
return "test2";
}
else {
return "test";
}
}
}
Dieser Teil funktioniert.
Allerdings möchte ich im Wesentlichen einen AJAX-Aufruf (nicht sicher, dass Sie das innerhalb einer Controller-Klasse mithilfe von jQuery oder einer anderen Methode tun können, so dass ich zurück zum ursprünglichen Aufruf bin, was ich zurück Englisch: www.mjfriendship.de/en/index.php?op...39&Itemid=32 Es muss einen besseren Weg geben, das zu tun, aber ich mag die Idee, einen Controller zu haben, der alle Anfragen für diese spezielle Anwendung bedient. Ich fange gerade erst damit an, also ist es meistens ein . Lernübung
Um dies näher auszuführen, die PHP-Seite, die einige meiner Funktionen wie diese, abgespeckte Version:
<?php
$option = $_POST["APICall"];
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$curl = curl_init();
curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$APIBase = 'xxx';
$userName = "xxx";
$passWord = "xxx";
$sid =null;
$studyUUID;
function CallAPI($method, $API_command, $data = false)
{
global $curl; // curl object
global $APIBase; // base url for API calls
global $sid; // session id, null initially, but after login it is set for the session,
switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
curl_setopt($curl, CURLOPT_URL, $APIBase . $API_command);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
if ($sid == null) {
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "login:password");
}
$result = curl_exec($curl);
return $result;
}
Es gibt andere Funktionen auf derselben Seite, die von der initialisierten Variablen und $ curl abhängen. Fazit ist, dass ich einige Ergebnisse, entweder im JSON-Format oder in einem anderen Text (wie formatiertes Array print_f), hauptsächlich zur Entwicklung und zum Testen, abrufe. Deshalb möchte ich, dass ein Controller diesen Feature-Satz behandelt.
Also meine Frage ist, wie rufe ich meine Funktionen auf dieser Seite im Controller und die Ergebnisse zurück zu meinem ursprünglichen AJAX-Anruf.
Es ist eine dumme Frage oder Methode?
Vielleicht ist das, was ich brauche?
Calling a function within a Class method?
gibt es einfachere Möglichkeiten, ein Formular als serialisieren. Beispiel ist zu komplex, um als Basis verwendet zu werden, wenn keine Dateien hochgeladen werden. – charlietfl
Was würden Sie sonst vorschlagen? – Dastur
Ich habe meine ursprüngliche Frage bearbeitet. Lassen Sie mich Ihre erste Antwort verdauen und ich werde Follow-up veröffentlichen. – sscotti