2016-06-03 3 views
0

Ich habe ein Anker-Tag in einer page1.html, die ein onClick-Ereignis hat. Dieses onClick führt einen REST-API-Aufruf durch. Die Antwort dieses REST-API-Aufrufs wird dann an eine JavaScript-Funktion übergeben, die page2.html lädt und ein Eingabefeld auf Seite 2 muss mit dem Antwortwert gefüllt werden.Javascript - Auffüllen Eingabefeld mit etwas Wert von Ajax Rest Antwort erhalten

Hier ist der Code, der die neue Seite lädt und versucht, das Eingabefeld, die auf der neuen Seite

function(response){ 
document.location="page2.html"; 
$("#inputBoxID").val(response.text);  
} 

Der obige Code in das Eingabefeld mit der ID „inputBoxID“ in page2 ist nicht zu füllen bevölkern. html. Was könnte der Grund und die mögliche Lösung sein?

+0

Wäre es nicht sinnvoller, nur die Seite2 ein onload laden() den Ajax Anruf und füllen Sie Ihre Sachen? –

+0

Ich möchte page2 nicht laden, wenn der REST-API-Aufruf fehlschlägt, deshalb führe ich den Ajax-Aufruf zuerst und bei Erfolg lade ich page2 – user2713255

+0

'document.location =" page2.html "; 'Sie wissen, dass der Browser von der aktuellen Seite weg navigiert, oder? Js nach diesem Aufruf sollte nicht mehr ausgeführt werden, da die Seite entladen wird. –

Antwort

4

Von https://developer.mozilla.org/en-US/docs/Web/API/Document/location

„Obwohl document.location ist ein Nur-Lese-Location-Objekt, können Sie auch eine DOMString zuweisen. Dies bedeutet, dass Sie mit document.location arbeiten kann, als ob es sich um eine Zeichenfolge waren in den meisten Fälle: document.location = 'http://www.example.com' ist ein Synonym von document.location.href = 'http://www.example.com'. "

Sie ändern tatsächlich die Seite, auf der Sie sich befinden. Sie haben den Kontext Ihrer API-Anfrage verloren. Dieser Code, der im Speicher von page1.html gelandet ist, ist jetzt weg, es gibt keine Möglichkeit, ihn zurückzubekommen, wenn man nicht anfängt, diese Daten in localStorage zu pushen und sie beim nachfolgenden Aufruf von page2.html wieder zu laden.

+0

Also was ist die Lösung, gibt es eine Möglichkeit, eine neue Seite ohne die Daten zu laden Verlust? – user2713255

+1

Sie können einen AJAX-Aufruf verwenden, um page2.html zu erhalten. Sie müssen eine $ .AJAX GET-Anfrage an sie richten und dann den Hauptteil der Antwort in die Seite einfügen. Dann stopfen Sie den response.text von der ursprünglichen Anfrage in die Eingabe, nachdem das Dokument geladen wurde. Aber um ehrlich zu sein, die Lösung ist, dass Sie dies ziemlich überbewertet haben und Ihre App von Grund auf falsch entwickelt haben. Sie sollten Ihr Design überdenken oder ein Framework verwenden. –

Verwandte Themen