Hallo zusammen,
ich arbeite seit geraumer Zeit an einem Projekt. Dabei muss ich mit einer API einer Firma arbeiten. Um die von mir benötigten Daten zu erlangen, starte ich per JavaScript mit einem xmlHttpRequest-Objekt eine Anfrage:
Diese Anfrage funkioniert auch einwandfrei, alles kein Problem.
Diese vom Nutzer eingegebenen Daten, welche hier and die PHP-Datei übergeben werden können allerdings durchaus Schreibfehler oder nicht vorhandene Nutzernamen enthalten.
Ich habe nun, um die Fehlercodes (400, 401, 404, 429, 500 und 503) von cUrl bzw. der API abzufangen, in der Datei der API, welche von "data.php" aus aufgerufen wird, folgendes "Konstrukt":
Nun ist das zwar eine funktionable Lösung, jedoch nicht sonderlich elegant. Ich würde stattdessen lieber eine Art PopUp auf der Seite (der Eingabe) generieren. Hierzu würde ich vorzugsweise JavaScript bzw. jQuery einsetzen. Nun stellt sich mir die Frage, nachdem ich den JavaScript-Code nicht direkt hier (im PHP-Code) per "echo" ausführen kann, wie ich dies sonst tun könnte. Oder alternativ, wie ich das xmlHttpRequest-Objekt mit einer Fehlermeldung aus der PHP-Datei beantworten könnte, um wieder in der JS-Datei zu landen und dort den JS-Code auszuführen zu können.
Falls es noch Fragen zu meiner Erklärung gibt, beantworte ich diese gerne!
Ich bedanke mich schonmal im Vorraus für eure Ratschläge.
ich arbeite seit geraumer Zeit an einem Projekt. Dabei muss ich mit einer API einer Firma arbeiten. Um die von mir benötigten Daten zu erlangen, starte ich per JavaScript mit einem xmlHttpRequest-Objekt eine Anfrage:
Code:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function(){ if(xmlhttp.readyState == 4){ result = xmlhttp.responseText.split(", "); result_array = JSON.parse(result[12]); result_array_2 = JSON.parse(result[13]); result_array_3 = JSON.parse(result[15]); result_array_4 = JSON.parse(result[16]); result_array_5 = JSON.parse(result[17]); var spellurl = "http://ddragon.leagueoflegends.com/cdn/4.13.1/img/spell/"; var itemurl = "http://ddragon.leagueoflegends.com/cdn/4.13.1/img/item/"; $("#div_header").slideDown(500); $("#div_header").html("<img src='img/" + result[11] + "_Splash_0.jpg' style='left: -200px; opacity: 0.75; position: absolute; top: -125px;'/>" + "<img id='summonericon' src='" + result[14] + "' /><label class='header_label' id='l10'>" + result[0] + "</label><label class='header_label' id='l11'>" + result[2].toUpperCase() + "</label><label class='header_label' id='l12'>Level " + result[3] + "</label>"); $("#div_content").html("<img id='leagueicon' src='img/" + result[4] + "_" + result[5] + ".png' /><label id='l13'>" + result[4] + " " + result[5] + "<br>" + result[6] + " lp<br>" + series(result[10]) + "<br>" + result[7] + " / <font style='color: green;'>" + result[8] + "</font> / "+ "<font style='color: red;'>" + result[9] + "</font></label><div id='vr'></div><div class='mpcd' id='d1'>most played champions</div><div class='mpcd' id='d2'><img class='mpci' src='img/" + changeName(result_array[0]["champion"]) + "_Square_0.png' /><label class='mpcl'>" + result_array[0]["champion"] + "<br>total games: " + result_array[0]["total_games"] + "</label></div>" + "<div class='mpcd' id='d3'><img class='mpci' src='img/" + changeName(result_array[1]["champion"]) + "_Square_0.png' /><label class='mpcl'>" + result_array[1]["champion"] + "<br>total games: " + result_array[1]["total_games"] + "</label></div>" + "<div class='mpcd' id='d4'><img class='mpci' src='img/" + changeName(result_array[2]["champion"]) + "_Square_0.png' /><label class='mpcl'>" + result_array[2]["champion"] + "<br>total games: " + result_array[2]["total_games"] + "</label></div><div class='mpcd' id='d5'>" + "<img class='mpci' src='img/" + changeName(result_array[3]["champion"]) + "_Square_0.png' /><label class='mpcl'>" + result_array[3]["champion"] + "<br>total games: " + result_array[3]["total_games"] + "</label></div>" + "<div class='mpcd' id='d6'><img class='mpci' src='img/" + changeName(result_array[4]["champion"]) + "_Square_0.png' /><label class='mpcl'>" + result_array[4]["champion"] + "<br>total games: " + result_array[4]["total_games"] + "</label></div>" + "<div id='hr'></div><div id='mh1'><img class='playedchampion' src='img/" + changeName(result_array_5[0][0]) + "_Square_0.png' /><img class='spell1' src='" + spellurl + result_array_5[1][0][0] + ".png' /><img class='spell2' src='" + spellurl + result_array_5[1][1][1] + ".png' /><img class='item1' src='" + checkURL(itemurl + result_array_5[3][0][0], 1) + ".png' /><img class='item2' src='" + checkURL(itemurl + result_array_5[3][0][1], 2) + ".png' /><img class='item3' src='" + checkURL(itemurl + result_array_5[3][0][2], 3) + ".png' /><img class='item5' src='" + checkURL(itemurl + result_array_5[3][0][3], 5) + ".png' /><img class='item6' src='" + checkURL(itemurl + result_array_5[3][0][4], 6) + ".png' /><img class='item7' src='" + checkURL(itemurl + result_array_5[3][0][5], 7) + ".png' /><img class='item4' src='" + checkURL(itemurl + result_array_5[3][0][6], 4) + ".png' /><label id='score'>" + checkScore(result_array_5[5][0]) + "/" + checkScore(result_array_5[6][0]) + "/" + checkScore(result_array_5[7][0]) + "</label><label id='playedtime'>" + checkPlaytime(result_array_5[8][0]) + "</label></div>"); }else if(xmlhttp.readyState == 3){} }; xmlhttp.open("POST", "data.php", true); xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(fetchParameter()); $("#div_content").empty().append("<img id='loadinganimation' src='img/ajax-loader.gif'/>");
Diese vom Nutzer eingegebenen Daten, welche hier and die PHP-Datei übergeben werden können allerdings durchaus Schreibfehler oder nicht vorhandene Nutzernamen enthalten.
Ich habe nun, um die Fehlercodes (400, 401, 404, 429, 500 und 503) von cUrl bzw. der API abzufangen, in der Datei der API, welche von "data.php" aus aufgerufen wird, folgendes "Konstrukt":
PHP-Code:
$info = curl_getinfo($ch);
//getting http error codes
if($info['http_code'] != 200){
switch($info['http_code']){
case 400: echo("Es ist folgender Fehler aufgetreten: die Anfrage ist nicht korrekt."); break;
case 401: echo("Es ist folgender Fehler aufgetreten: Sie haben keine Zugriff auf diese Informationen."); break;
case 404: echo("Es ist folgender Fehler aufgetreten: Dieser Beschwörer existiert nicht."); break;
case 429: echo("Es ist folgender Fehler aufgetreten: das Anfragelimit wurde überschritten."); break;
case 500: echo("Es ist folgender Fehler aufgetreten: es ist ein interner Serverfehler aufgetreten."); break;
case 503: echo("Es ist folgender Fehler aufgetreten: dieser Service ist im Moment nicht verfügbar."); break;
default: ; break;
}
curl_close($ch);
die();
}else{
//close the connection to the riot statistics server
curl_close($ch);
//returning the result
return($result);
}
Falls es noch Fragen zu meiner Erklärung gibt, beantworte ich diese gerne!
Ich bedanke mich schonmal im Vorraus für eure Ratschläge.
Kommentar