Może to mieć prostą odpowiedź, jednak nie mogę zrozumieć poprawnej składni. Mam powtórzenie następujące wydarzenie OnClick na stronie PHP:

$ratelink = text string...
echo '<div><span id="anything" onclick="updatePos('.$ratelink.')">Save</div>';

Na mojej stronie JS mam funkcję:

function updatePos(ratelink)
{
  alert(ratelink); 
}

Moim problemem jest to, że gdy $ Ratelink jest liczbą, zmienna przekaże bez problemów. Jednakże, gdy $ Ratelink jest ciągiem tekstu, jak w powyższym przykładzie nic nie zostanie przekazany, a alert nie wykonuje.

Myślę, że następuje: ". $ Ratelink.") Musi być w innej składni, aby przejść tekst, ale nie znam dokładnego formatu.

2
user175328 15 grudzień 2011, 01:12

4 odpowiedzi

Najlepsza odpowiedź

Musisz załączyć ciąg w cytatach podczas przechodzenia do funkcji JS, a także w PHP:

$ratelink = 'text string...';
echo '<div><span id="anything" onclick="updatePos(\''.$ratelink.'\')">Save</div>';
7
Ryan LaB 14 grudzień 2011, 21:15

Wypróbuj ten echo '<div><span id="anything" onclick=updatePos("'.$ratelink.'")>Save</div>'; Jeśli w $ w wysokości $ Ratelink zmienna, powinna być cytowana w ciągu ....

0
Kashif Khan 14 grudzień 2011, 21:15

Twój ciąg musi zostać owinięty w cytaty ... więc musisz to zrobić

echo '<div><span id="anything" onclick="updatePos(\''.$ratelink.'\')">Save</div>';

I upewnij się, że uciekasz również ze sznurka, jeśli może mieć jakieś cytaty

0
Ben D 14 grudzień 2011, 21:18

Żadna z odpowiedzi nie jest poprawna. Przynajmniej nie najlepsza opcja. Rozważ użycie json_encode(), aby przekazać dowolne dane z PHP do JS. Zapewnia to, że dane są prawidłowo uciekły.

var myObj = <?=json_encode(array('php' => 'array'))?>;

console.log(myObj);
0
Gajus 14 grudzień 2011, 21:20