Jquery $ ile sorun. Fonksiyonu olsun

4 Cevap php

I have a problem with the jquery $.get function. I'm trying to get data from PHP file needed to check does the specific user has subscription and is he recorded at ignore list by other users.

Bu jquery kodu ile ben PHP dosyası kullanarak MySql bu iki verinin yalnızca birini alabilirsiniz.

JQuery kodu:

$(document).ready(function(){
    $.get("getdata.php", function(returned_data) { 
        if(returned_data === "1") {
            $("div#wall").html('user has no subscription');
            $("#message_wall").attr("disabled", "disabled");
            return false;
        }
    });
});

PHP dosyası MySQL sorgusu vardır ve bu sayfa, bu gibi görünüyor:

$query = mysql_query("SELECT * FROM subscription WHERE id=$ipr");
$result = mysql_fetch_assoc($query);

if (time() > $result['date']) {
    echo "1";
} else {
    echo "5";
}


$res = mysql_query("SELECT * FROM ignor WHERE migid=$ipr AND igid=$id") or die(mysql_error());
$num_rows = mysql_num_rows($res);
if ($num_rows >= "1") {
    echo "2";
}

Her PHP echo yanıt kodu için ben jquery $ ihtiyacım şey. Olsun fonksiyonu. Separeted attr () ve. Html () ("1" echo için, "2" echo ve "5" echo)

Jquery $ ile bunu nasıl yapabilirim. Olsun?

4 Cevap

Dedi Jake gibi, $ kullanarak. GetJSON iyidir. jQuery web sunucusundan bir yanıt olarak JSON almak için destek inşa etti, bu yüzden böyle basit bir görev için javascript tarafında herhangi bir ek JSON kütüphaneler gerekmez. Ayrıca PHP tarafında, biz bu basit senaryo için el haddelenmiş JSON kullanarak (javascript gönderilecek) JSON yanıt kurabilirsiniz.

PHP kodu şöyle olacaktır:

$query = mysql_query("SELECT * FROM subscription WHERE id=$ipr");
$result = mysql_fetch_assoc($query);

if (time() > $result['date']) {
    echo '{ "resultCode":1, "description":"message 1 to be displayed to user" }';
} else {
    echo '{ "resultCode":5, "description":"message 5 to be displayed to user" }';
}

$res = mysql_query("SELECT * FROM ignor WHERE migid=$ipr AND igid=$id") or die(mysql_error());
$num_rows = mysql_num_rows($res);
if ($num_rows >= "1") {
    echo '{ "resultCode":2, "description":"message 2 to be displayed to user" }';
}

Javascript sonra aşağıdaki için güncellenmiş olabilir:

$(document).ready(function(){
    $.getJSON("getdata.php", function(returned_data) { 

        // returned_data is now a javascript object with 2 properties:
        //   returned_data.resultCode
        //   returned_date.message

        // if the user has a valid subscription
        if (returned_data.statusCode === 5) {
            $("#message_wall").removeAttr("disabled");
            return true;
        }
        // if the user has an invalid subscription, show the message returned from the PHP
        else {
            $("div#wall").html(returned_data.message);
            $("#message_wall").attr("disabled", "disabled");
            return false;                
        }
    });
});

Geri javascript çok sayıda yanıt göndermek gerekiyor eğer Ayrıca, PHP kodundan yanıt bu gibi görünüyor böylece javascript diziye JSON yanıt nesneleri kurabilirsiniz:

[ { "resultCode":1, "description":"msg" }, { "resultCode":2, "description":"msg" }, ... ]

Lütfen javacript sonra yerleşik $. each () işlevini kullanarak iterated returned_data parametrede bir dizi alırsınız.

JSON ile ilgili daha fazla bilgi için, bkz: json.org

Teja yazdığı gibi, sadece farklı dönüş değerleri işlemek için JavaScript kodu daha if-else blokları ekleyebilirsiniz.

Ama noktaya daha fazlası - bilgi fazla 1 adet dönmek gerekirse, gerçekten sunucu tarafında (örneğin) JSON olarak kodlamak gerekir. İşte bunun için PHP kitaplıkları dahili ve JSON.org bir JSON javascript kütüphanesi vardır.

Sen $.getJSON birden fazla geri dönüş değerleri izin vermek istiyorum

Bkz the docs

Sonra PHP biçimi var sanki json şey olarak çıktısı

{ "subscribed": true, "ignored": false }

Sonra javascript bu gibi bakabilirsiniz

$.get("getdata.php",
function(returned_data)
{ 

   if(returned_data.subscribed){
      ... 
   }

   if(returned_data.ignored){
      ...
   }

});

Sorunuzu doğru anlamak, soran tüm sunucudan farklı yanıt yürütmek için farklı javascript kullanıyor. Eğer öyleyse şimdi kullandığınız gibi, ne yapıyorsun success geri arama if-elseif ile çalışacaktır.