php ve JSON yardım!

4 Cevap php

Ben bir veritabanı tablosunu güncelleştirmek için bir komut dosyası var. Ben bir JSON dizi dönmek ve jQuery ile bazı tabloları güncellemek gerekiyor.

Benim php script:

$update = mysql_query("UPDATE PLD_SEARCHES SET STATUS = 1, TOTAL_RESULTS = ".$scrapper->getTotalResults().",RESULTS = $resultCounter WHERE ID = ".$searchId);
$output = array("status"=>"COMPLETED","results"=>$resultCounter,"totalResults"=>$scrapper->getTotalResults());
echo json_encode($output);

jquery kodu:

$("button").live("click", function(event){
                    event.preventDefault();
                    $.getJSON("startsearch.php",{ searchId: $(this).val() }, function(data){
                        alert(data[0].status);
                    });

şimdi ... sorun olduğunu i $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) komut idam olur kullanmak ve ben tanımsız değer güzel bir uyarısı alırsanız. i parametresi "json" eklerseniz komut artık idam almaz. Ben getJSON kullanabilirsiniz ama yine aynı sorun çalıştı.

Herkes herhangi bir fikirleri var? Ben umutsuz değilim ... Bu neredeyse bir hafta boyunca beni rahatsız etti ve ben hala bunu çözmek için yönetilen değil.

4 Cevap

Php dosyasında doğru içerik türünü ayarlamak için emin olun:

header("Content-type: application/json; charset=utf-8");

böylece jquery yapabilirsiniz json nesne içine doğru eval yanıt.

Aşağıdaki gibi size yanıt veri alabilirsiniz:

alert(data.status);
alert(data.results);
alert(data.totalResults);

Lütfen firefox içine kundakçı yüklemek veya krom veya safari javascript konsolu etkinleştirin uyarısı kullanmayın lütfen. bundan sonra kullanabilirsiniz console.log(data);

benim tahminim veriler bir dizi değil olmasıdır. ayrıca jquery dokümanlar üzerinde her () xmaple bakabilirsiniz http://docs.jquery.com/Ajax/jQuery.getJSON

Eh, ben json2.js AJAX isteği dönen json verilerini ayrıştırmak güveniyorum. Sen http://json.org indirebilirsiniz. Bu kütüphane herhangi bir dizeyi ayrıştırmak için daha iyi bir yol sağlar ve acı json değilse bir istisna atar.

Ben hep böyle benim AJAX isteğini yazmak:

$.post(URL,
  { PARAM },
  function(data){
    try {
      var r = JSON.parse(data);
      //this for your code above
      alert (r.status); //should be 'COMPLETED'
    }
    catch (e) {
      //data is not in json format, or there are another exception in try block
      //do something about it
      alert('Exception occured, please check the data!');
    }
});

Json işlerken, php dizi json değişken bir üyesi olacaktır. Yani php o $output['status'], sonra json, o olacak eğer r.status.