Mam ciężką sytuację, dość dziwną.
Posiadam kod JS pewnej aplikacji. Nie mogę go zmienić, po prostu go znam. I w tym cały problem - bez zmian kodu JS mam do tego dopisać kod działający po stronie serwera, w PHP.
Fragment funkcji dołączonej do zdarzenia onreadystatechange wygląda tak:
Kod
if(request.readyState == 4){
if(request.status == 200){
if(formObjTyp.length > 0 && formObjTyp == "input"){
var resp = request.responseText;
// Wartość zwrotna jest tablicą.
var func = new Function("return "+resp);
var objt = func();
var sel = document.createElement("select");
sel.setAttribute("name","countries");
createOptions(sel,objt);
var newsel = document.getElementById("newsel");
reset(newsel);
newsel.appendChild(sel);
}
if(request.status == 200){
if(formObjTyp.length > 0 && formObjTyp == "input"){
var resp = request.responseText;
// Wartość zwrotna jest tablicą.
var func = new Function("return "+resp);
var objt = func();
var sel = document.createElement("select");
sel.setAttribute("name","countries");
createOptions(sel,objt);
var newsel = document.getElementById("newsel");
reset(newsel);
newsel.appendChild(sel);
}
Sęk tkwi w funkcji createOptions:
Kod
function createOptions(sel, _options)
{
if (_options == null || _options.length == 0)
{
return;
}
var opt = null;
for (var i = 0; i < _options.length; i++)
{
opt=document.createElement("option");
opt.appendChild(document.createTextNode(_options[i]));
sel.appendChild(opt);
}
}
{
if (_options == null || _options.length == 0)
{
return;
}
var opt = null;
for (var i = 0; i < _options.length; i++)
{
opt=document.createElement("option");
opt.appendChild(document.createTextNode(_options[i]));
sel.appendChild(opt);
}
}
Nie mogę zmienić tego kodu. No a funkcja createOptions() spodziewa się tablicy jako drugiego parametru. Teraz pytanie, jak ułożyć taki kod PHP, żeby w zmiennej objt była tablica...

Jeśli chodzi o mój wysiłek, to próbowałem z XML. Ale wtedy krzaczy się konstruktor Function("return" +resp), chyba że coś źle robiłem...