De är skummt, har suttit och funderat på detta en bra stund nu och så kommer man på något strax efter man tryckt på skicka.
Är det möjligen så att jag snöar in mig för mycket på php-syntaxen. Om det finns något i en sträng innanför eval som har samma namn som en variabel så funkar den helt enkelt som en variabel?
Du bör undvika att använda eval på det sättet så mycket du bara kan eftersom ditt returdata förr eller senare garanterat kommer att innehålla tecken som behöver escape'as som ' \ och radbrytning.
Jag föreslår en lösning där du enbart använder eval för att för att hämta en funktionsreferens, och sedan användar call för att kalla på metoden. För att göra det enkelt skickar jag i exemplet med funktionsparametrarna som en array, och dessutom kommer arrayens första element vara funktionsnamnet. Det är saker du får stå ut med så länge.
<script type="text/javascript">
function checkName(parametrar){
alert("Detta är den input servern fick: " + parametrar[1] + "\nDetta är svaret jag fick: " + parametrar[2])
}
function callSomething(name){
eval(name).call(this, arguments);
}
callSomething("checkName", "mininput", "minrespons")
</script>
<script type="text/javascript">
function checkName(parametrar){
alert("Detta är den input servern fick: " + parametrar[1] + "\nDetta är svaret jag fick: " + parametrar[2])
}
function callSomething(name){
eval(name).call(this, arguments);
}
callSomething("checkName", "mininput", "minrespons")
</script>
Ja det där verkar ju fungera betydligt bättre. Men jag förstår inte riktigt hur du skickar parametrarna? Innehåller arguments alla argument i en javascript-funktion?? Kan du inte förklara vad som händer i callSomething() också? :) Resten förstår jag (tror jag i alla fall)...
Det kallar på funktionen som det objektet man kallar den för refererar till, i detta fall eval(name).
Men du had lika gärna kunnat göra eval(name)(arguments); i detta fall.
261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2