JQuery bir çizgi anlamak için

5 Cevap php

What does the following line mean?

    jQuery.post('/codes/handlers/delete_a_question.php', 
    { question_id: jQuery(this).attr('question_id') }

Context in HEAD

jQuery('a.delete_question').live('click', function(){
    jQuery.post('/codes/handlers/delete_a_question.php', 
    { question_id: jQuery(this).attr('question_id') }, 
        function(data){
            alert ("Output of the delete.php -page: " + data );
                                        // `data` is probably unnecessary
    }) 
});

My handler in /codes/delete_a_question.php

$dbconn = pg_connect("host=localhost port=5432 dbname=noa user=noa password=123");
$result = pg_prepare ( $dbconn, "delete_question_query",
    "DELETE FROM questions
    WHERE question_id = $1"
);
$result = pg_execute ( $dbconn, "delete_question_query", array ( $_GET['question_id'] ) );
header( "Location: /codes/index.php?successful_removal");

HTML

 echo ("<a href='#' class='delete_question'"
      . " id=question_id'" . $question_id . "'"   // to have question_id777
      . ">delete</a>"
 );

Ben kullanıcı GET gelen question_id alarak ilk bir bağlantıyı tıkladığında eğer bir soru çıkarmak için çalışıyorum. Ancak, çalışmak için jQuery kodu almak için yönetilen değil. Ben aşağıdaki açılan almak ve soru kaldırılmaz.

Ben şimdi olsun bir halk olarak this code bir ( ile problem çözme ve $_GET değiştirdikten sonra $_POST.

5 Cevap

Düz İngilizce Bu kod çevirmek durumunda:

jQuery.post('/codes/handlers/delete_a_question.php', 
{ question_id: jQuery(this).attr('question_id') }

okur:

"Uyumsuz POST isteği yapmak parametre ile '/ kodları / işlemcileri / delete_a_question.php' değer 'Bu' html niteliğini 'question_id' değeri olmalı kim 'question_id' için."

Senin durumunda 'bu' bir soruyu silmek için tıkladım olma linke bakın istiyorsunuz. Bu bir çapa etiketi için geçerli bir HTML niteliği (veya XHTML) nitelik değil 'question_id' adlı bir öznitelik arıyor. Bu soruna neden olabilir.

Nerede link etiketinin size soru id depolamak? Eğer XHTML kullanıyorsanız, bir çapa ve ne (bu durumda bağlantı ve silinecek soruya arasındaki ilişki olabilir) bağlantılar arasındaki ilişkiyi tanımlamak için bir iş "rel" özniteliği, kullanabilirsiniz.

Yani bu değişiklik:

<a href="#" class="delete_question" question_id="123">delete</a>

Buna:

<a href="#" class="delete_question" rel="123">delete</a>

ve sonra javascript / jQuery değiştirebilirsiniz:

{ question_id: jQuery(this).attr('question_id') }

Bunun için:

{ question_id: jQuery(this).attr('rel') }

post

Load a remote page using an HTTP POST request.

Bu durumda, loads delete_a_question.php

attr

İkinci parametre anahtar / değer çiftleri veya sunucuya gönderilecek. Serialize () fonksiyonunun dönüş değeri.

Bu durumda, öznitelik question_id tıklanan kenedin alınır

fonksiyonu (veri)

veri başarıyla yüklendiğinde callback function yürütülecek edilir.

live

eşleşen eleman için bir olay için bir işleyici bağlar.

Bu durumda, binds a click event handler.

$.post için bir yöntem imzadır:

jQuery.post( url, [data], [callback], [type] )

Bu hat Yani:

jQuery.post('/codes/handlers/delete_a_question.php', 
{ question_id: jQuery(this).attr('question_id') }

İlk dize parametresi sonrası isteği gönderilecek URL, ve ikinci anahtar / değer çiftleri gibi verileri içeren bir nesnedir. (Kodunuzu durumunda bir sonraki satırda görüntülenir) üçüncü bir geri arama işlevi. Sadece zorunlu parametre ilk biridir.

JQuery'nın $. Sonrası yöntem $.ajax "POST" olarak ayarlanmış tipi seçeneği ile çağrı encapsultes.

Sizin çözüm tam olarak sorunuzun ilgili olmayan, ancak bir ) sizin PHP pg_execute hattı üzerinde ve hangi hatanın ilgili kaçırıyorsun.

Sorun PHP kodu olup jQuery gibi bana bakıyor -

Eğer yaşıyorsanız sorun büyük olasılıkla $ _GET yöntemi kullanılarak parametre "question_id" alıyorsanız gerçeği ile ilgilidir:

$_GET['question_id']

olan sadece bir GET isteği parametreleri alır. Bu durumda (jQuery.post () fonksiyonu ile) bir POST isteği yapıyoruz, bu yüzden kullanmak gerekir

$_POST['question_id']

yerine.