neden javascript işlevi için bu değişken geçmek olamaz?

3 Cevap php

Ben kullanıcı benim php sayfasındaki bir bağlantıyı tıkladığında bir javascript işlevi geçmek istediğiniz, benim php dosyası içinde bir değişken var.

Burada kısaca php:

$delete_img=$image_id.'_'.$newfilename;
$display_image.="<td><img src='../temp_images/$newfilename'>";
if ($i==$extra_pic){ 
$display_image.="<br><a href='#' onclick='window.parent.reset_imageform($i, $delete_img);'>delete picture</a></td>";}

"if ($ i == $ extra_pic) DOĞRU olduğunu böylece umursamıyorum ...

The problem is, if you click on the link 'delete picture' the function reset_imageform(nr, pic_nr) should get called, but it doesn't whenever I try to pass the variable $delete_img to the function. As soon as I remove this variable from the call like this 'reset_imageform($i);' then it works. but adding that variable, will make it not to work. The function doesnt get called at all!

23432423439_picture.jpg: değişken, bu gibi, örneğin daha sonra rastgele bir kimliği, bir çizgi ile nr, ve bir dosya içerir

Im burada eksik bir şey, ben php göndermeden önce delete_img $ için bir şeyler yapmalıyım var mı?

Bütün belgeler utf-8 formatında!

Teşekkürler

PS: Sadece daha fazla girdi ihtiyacınız varsa bana bildirin ...

3 Cevap

Eğer bir JavaScript işlevi bir dize ileterek ediyorsanız, düzgün alıntı olmalıdır:

Yani php olmadan, bu gibi görünüyor:

<br><a href='#'
  onclick='window.parent.reset_imageform(5, "23432423439_picture.jpg");'>
    delete picture</a></td>

Böylece elde edilen HTML almak için, tırnak eklemeniz gerekir:

$display_image.="<br><a href='#'
  onclick='window.parent.reset_imageform({$i}, \"{$delete_img}\");'>
    delete picture</a></td>";

Burada tırnak çok düzeyde var, yani çift tırnak etrafında 23432423439_picture.jpg \" gibi kaçtı gerekir

Bir dize olduğu gibi bunu teklif etmek gerekir.

Doğru yolu şöyle:

$display_image.='<br><a href="#" onclick="window.parent.reset_imageform(' . $i . ', '
    . htmlspecialchars(json_encode($delete_img))
    . ');">delete picture</a></td>';

Ben herhangi bir dize için çalışmasını sağlamak için etrafında tırnak takas ettik; aksi takdirde başka bir yerde kullanılan ve dize işe yaramaz bir kesme işareti içeriyorsa. Alternatif tırnak takas yapmak ENT_QUOTES htmlspecialchars() geçmek olacaktır.

Bu nedenle alıntı gerekmez - Sen $i o kendi eserleri, bu yüzden $i tamsayı olduğunu varsayarak yaşıyorum söylüyor.

Javascript ile sorunlarınız olduğunda, onu üretir sunucu tarafı kodu bakmak, ancak son çıkış bakmak (webbrowser rightclick sayfa ve 'görünümü kaynak' veya seçin) ve sadece oluşturulan JS kodu konsantre değil. Bu şekilde çok erken JS dize değişkeni etrafında eksik tırnak tespit olmalıdır.