AJAX Success-function, die JS-substr () verwendet, schlägt in WP 4.1 vs. 4.0 fehl

Seit Jahren habe ich php Ajax Anrufe und Antworten in meinen Plugins wie folgt eingerichtet, mit js Fehlererkennung Bedingungen wie benötigt …

if( "" == msg.substr(0, 3) ) { do_something(); } 

Ab WP 4.1 arbeitet substr nicht mehr mit der Response-Zeichenkette zusammen, tut dies aber. Warum? Der einzige große Unterschied, den ich zwischen den beiden sehe, ist in der JQuery / UI, aber ich würde nicht denken, dass dies die Ajax-Reaktionen beeinflussen würde.

MY_AJAX.PHP

 <?php die("Foo"); ?> 

Meine.js

 function test_msg(){ $.post("my_ajax.php", "foo", function(msg) { console.log(msg.substr(0, 3)); //LOGS empty string (twice) console.log(msg.split(">")[1]); //LOGS "Foo" if( "" == msg.substr(0, 3) ){console.log("Error");} //fails }); } 

Solutions Collecting From Web of "AJAX Success-function, die JS-substr () verwendet, schlägt in WP 4.1 vs. 4.0 fehl"

FWIW … Es scheint, dass eine Fehlkonfiguration in der PHP.INI auf einem neuen Entwicklungsserver (WAMP) aufgetreten ist, die bei der Aktualisierung von wp4.0 auf 4.1 zu einer unbekannten Beschädigung des Codes führte, so dass PHP unerwünschten Leerraum injizierte zB “\ r \ n \ r \ n …” in meinen AJAX-Antworten (wie ein fehlender schließender php?> tag oder sowas?)

Beim Ausführen von ob_clean () vor dem Zurückgeben einer AJAX-Antwort ging das Problem weg, UND … wenn nur die DEV-Kopie des Projekts das unerwünschte Verhalten zeigte, kopierte ich die Live-Site (wp4.1) in eine Spiegelinstallation auf dem neu konfigurierten DEV-Server und alle functionen wie erwartet.

Dennoch ist meine Praxis, benutzerdefinierte AJAX-Endpunkte in zukünftigen WP-Projekten zu verwenden, jetzt offiziell veraltet 😉