PHP, javascript, IE ile tek tırnak sorunları javascript fonksiyonu ajax görevinden değişken geçirmeden

5 Cevap php

Ben bu bir süre için işe almak için çalışıyorlar, ve ben sadece bulamıyorum kolay bir çözüm var sanıyorum. Başım jöle gibi hissediyor ve ben gerçekten herhangi bir yardım takdir ediyorum.

. Benim ana page.php backend.php bir yazı () yapar ve bunun şeklinde yankıları şehirlerin listesini getirir:

<li onclick="script('$data');">$data</li>

Liste zorlama ve. Html () üzerinden sayfa üzerine alınır.

$ Veri içinde bir tek teklif var benim sorun oluşur. backend.php page.php dosyasında değişken sadece iyi geçer ama html çalıştırdığınızda () o (IE, FF değil tabii ki) bir javascript hata atıyor;

')' is expected

IE tek teklif ayrıştırır ve komut () çağrı işler karışıyor. Ama nafile - Ben php tarafında ve / veya javascript tarafında 's kaçan, farklı şekillerde yankılandı dizeyi yeniden inşa etmek için çalışıyorum. Ben toplam komut yorumlayan var mı?

page.php

$.post("backend.php", {q: ""+str+""}, function(data) {
    if(data.length >0) {
         $('#results').html(data);
    }

backend.php

while ($row = $q->fetch()) {
    $city = $row['City'];
//  $city = addslashes($row['City']);
//  $city = str_replace("'","&#39;",$row['City']);
    echo "<li onclick=\"script('$city');\">".$city."</li>";
}

5 Cevap

Sen script() aramak ve daha sonra referans olabilir this.innerhtml.

<li onclick="script();">$data</li>

Ve sonra javascript:

function script() {
    data = this.innerHTML;
    // do stuff
}

ne ters bölü o kaçan hakkında?:

$city = str_replace("'","\'",$row['City']);

Hayatınızı kolaylaştırmak için, ben ve <head> sayfanın komut dosyalarını içerir eğer onclick kullanarak dağıtmak ve kimlik / sınıf tabanlı işlemcileri tıklayın kayıt olur. Ve hatta daha iyi, bunu yapmak için jQuery kullanmak, ancak SO etrafında oldum eğer zaten muhtemelen jQuery farkındayız yeterli.

Tek / Çift / Üçlü her zaman kaçan sadece buna değer değil.

Dava benim katkı minimal değişiklik ile mevcut fonksiyonunu kullanır.

<li onclick="script(this.innerHTML);">$data</li>