2017-05-05 2 views
0

andernfalls ich ein Stück von JS-Code haben, die eine URL assembliert und setzt dann das Dokument Standort:wie debuggen document.location Anruf

var url = 'pi_configure_mls.cgi?token=' + params.token + '&ml_sourcekey=' + key; 
document.location = url; 

Wenn dieser Code ausgeführt wird, ist es einfach aktualisiert die Seite (oder zumindest zeigt die gleiche Seite, die ich auf bin)

Das seltsame ist, wenn ich die rohe URL nehmen und diese manuell in meiner Konsole eingeben.

document.location = url; 

... es funktioniert! und ich bin auf die erwartete Seite gebracht.

Ich habe dies in einen Versuch/Fang verpackt, bestätigt, dass die URLs genau die gleichen sind, und ich kann nicht sagen, warum das passieren würde.

Hat jemand irgendwelche Tipps, wie man die Ursache für den Unterschied im Verhalten feststellen kann?

UPDATE 1:

ich die URL aus der Anrufprotokollierung und es passt, was ich erwarte:

pi_configure_mls.cgi?token=NEH727&ml_sourcekey=edelivery&choosetags=bc_p_2 

ich auch die Navigation auf die neue URL sehen protokolliert, wenn window.location und window.top.location mit:

Wenn ich in meinen Python-Logs auf dem Server nachschaue, sehe ich keinen Treffer auf pi_configure_mls_cgi aber ich sehe es schlagen pi_select_cgi so weiß ich, dass der Python ist nicht der Schuldige hier.

UPDATE 2:

Auch die gesamte Bereitstellung absolute URL fehlschlägt (im Code, die Konsole nicht):

window.top.location = 'https://www.some.site.of.mine.com/pi_configure_mls.cgi?token=NEH727&ml_sourcekey=edelivery&choosetags=bc_p_2' 

UPDATE 3:

keine URL in der Code wird funktionieren, unabhängig davon, was es ist. Ich mache die Logging-Anweisung nach dem Standort Versuch in dem Code sehen, als ob es gelungen:

try { 
    window.top.location = 'total_garbage!!!'; 
    console.info('HEY WE WENT SOMEWHERE!'); //I see this logged 
} 
catch (e) { 
    console.info('this failed!' + e); 
} 
+0

versuchen Sie, den url-Wert zu "console.log" zu bestätigen, um zu bestätigen, dass es das ist, was Sie wollen und verwenden Sie 'window.top.location = url' stattdessen – Tareq

+0

Sie könnten etwas wie Fiddler verwenden, um zu sehen, ob irgendeine Art von Anfrage geht über den Draht hinaus. – RJM

Antwort

0

Versuchen Sie, die window.location anstelle des document.location

verwendet Es wird denjenigen empfohlen verwendet werden: https://www.w3.org/TR/html/browsers.html#dom-location

+0

Danke - Ich werde das weiter verwenden. Sehen Sie sich das Problem weiterhin an und fügen Sie einige Aktualisierungshinweise hinzu. – JacobIRR

+0

Ist pi_configure_mls_cgi korrekt? Sie haben den Punkt in Ihrer URL – quirimmo

+0

Ja, tut mir leid. Meine CGIs sind Methoden, bei denen der Punkt durch einen Unterstrich ersetzt wird – JacobIRR