JQuery.post kullanarak veri alınamadı

4 Cevap php

I'm trying to use jQuery.post() function to retrieve some data. But i get no ouput.

Ben bir tablo görüntüleyen bir HTML var. Bu tabloyu tıklayarak bir jQuery.post olayı tetiklemesi gerekir.

Benim scriptfile bu gibi görünüyor:

jQuery(document).ready(function() { 

  jQuery('#storeListTable tr').click(function() { 
    var storeID = this.cells[0].innerHTML; //This gets me the rowID for the DB call.

    jQuery.post("../functions.php", { storeID: "storeID" }, 
      function(data){ 
         alert(data.name); // To test if I get any output 
      }, "json"); 
    }); 
});  

Benim PHP dosyası gibi görünüyor:

<?php 
  inlcude_once('dal.php'); 

  //Get store data, and ouput it as JSON. 
  function getStoreInformation($storeID) 
  {
    $storeID = "9";//$_GET["storeID"]; 
    $sl = new storeLocator(); 
    $result = $sl->getStoreData($storeID); 

    while ($row = mysql_fetch_assoc($result)) { 
    { 
        $arr[] = $row; 
    } 
    $storeData = json_encode($arr); 
    echo $storeData;  //Output JSON data 
  } 
?> 

Ben PHP dosyasını test ettik ve bu JSON biçiminde verileri verir. Benim tek sorun şimdi benim javascript bu verileri döndürmektir.

  1. javascript teh / js / klasöründe bulunan bu yana, bu '.. /' kullanarak php dosyayı aramak için doğrudur?
  2. Ben doğru StoreID parametre geçirerek sanmıyorum. Doğru yolu nedir?
  3. How can I call the getStoreInformation($storeID) funtion and pass on the parameter? The jQuery example on jQuery.com has the folloing line: $.post("test.php", { func: "getNameAndTime" } Is the getNameAndTime the name of the function in test.php ?

Ben gerçekten really bu konuda biraz yardıma ihtiyacım var. Ben şimdi 6 gün boyunca sıkışmış oldum: (


Hızlı tepki çocuklar için teşekkür ederiz.

I have gotten one step further. I have moved the code from inside the function(), to outside. So now the php code is run when the file is executed.

Benim js komut artık bu gibi görünüyor:

  jQuery('#storeListTable tr').click(function() {
    var storeID = this.cells[0].innerHTML;

    jQuery.post("get_storeData.php", { sID: storeID },
      function(data){
         alert(data);
      }, "text");
    });

This results in an alert window which ouputs the store data as string in JSON format. (because I have changed "json" to "text").

JSON dizesi gibi görünüyor:

[{"id":"9","name":"Brandstad Byporten","street1":"Jernbanetorget","street2":null,"zipcode":"0154","city":"Oslo","phone":"23362011","fax":"22178889","www":"http:\/\/www.brandstad.no","email":"bs.byporten@brandstad.no","opening_hours":"Man-Fre 10-21, L","active":"pending"}]

Now, what I really want, is to ouput the data from JSON. So I would change "text" to "json" and "alert(data)" to "alert(data.name)". So now my js script will look like this:

  jQuery('#storeListTable tr').click(function() {
    var storeID = this.cells[0].innerHTML;

    jQuery.post("get_storeData.php", { sID: storeID },
      function(data){
         alert(data.name);
      }, "json");
    });

Unfortunately, the only output I get, is "Undefined". And if I change "alert(data.name);" to "alert(data);", the output is "[object Object]".

  1. Peki nasıl çıktı teh mağazanın adı ne?

  2. In the PHP file, I've tried setting $storeID = $_GET["sID"]; But I don't et the value. How can I get the value that is passed as paramter in jQuery.post ? (currently I have hardcoded the storeID, for testing)

4 Cevap

Tamam, Darryl sayesinde, ben cevabı buldum.

Yani burada bu merak herkes için fonksiyonel kodu:

javascript file

jQuery(document).ready(function() {

  jQuery('#storeListTable tr').click(function() {

    jQuery.post("get_storeData.php", { storeID: this.cells[0].innerHTML },     // this.cells[0].innerHTML is the content ofthe first cell in selected table row
      function(data){
         alert(data[0].name);
      }, "json");
    });

});

get_storeData.php

<?php
  include_once('dal.php');

  $storeID = $_POST['storeID'];   //Get storeID from jQuery.post parameter

  $sl = new storeLocator();
  $result = $sl->getStoreData($storeID);  //returns dataset from MySQL (SELECT * from MyTale)

  while ($row = mysql_fetch_array($result))
  {
    $data[] = array( 
    "id"=>($row['id']) ,
    "name"=>($row['name']));
  }  

  $storeData = json_encode($data);

  echo $storeData;
?>

Tüm yardım çocuklar için teşekkürler!

"StoreID" etrafında tırnak Lose:

Yanlış:

jQuery.post("../functions.php", { storeID: "storeID" }

Sağ:

jQuery.post("../functions.php", { storeID: storeID }

bartclaeys doğrudur. Şu anda olduğu gibi, kelimenin tam anlamıyla mağaza kimliği olarak dize "StoreID" geçiyoruz.

Ancak, bir çift daha notlar:

  • Neden sadece ikinci bir değerlendirilir ediliyor - Bu ayarı olacağını storeID: storeID garip görünebilir? Ben ilk başladığımda ben "01:01" falan gönderme değildi üçlü onay her şey vardı. Böyle bir nesne notasyonu kullanan Ancak, anahtarlar yüzden sadece ikinci bir gerçek değişken değeri olacaktır, değerlendirmeye alınmaz.
  • Hayır, bu JS dosyasının konumuna ../ düşünme gibi PHP dosyasını aradığınız bu doğru değildir. Bu javascript yüklü ne olursa olsun sayfanın bakımından onu aramak zorunda. Sayfayı aradığınız PHP dosyası olarak aynı dizinde aslında Yani, doğru yere noktasına düzeltmek isteyebilirsiniz.
  • Tür önceki noktalarına bağlı, sen really Firebug ellerini almak istiyorum. Onlarla başarılı gönderiliyor hangi verilerin, bunu yapmak ve hangi verilerin geri gönderiliyor, bu, gönderildikleri zaman AJAX istekleri görmek için izin verir. Bu, seçim uzlaşma aracı JavaScript / AJAX uygulama hata ayıklamak için, basitçe ve siz, o var onu kullanın ve aptalca bir hata ayıklama başka 6 gün harcamak istemiyorsanız onu beslemek gerekir. :)

Eğer yıkmak EDIT Bildiğim kadarıyla sizin cevap olarak, size geri ne:

[
  {
    "id":"9",
    "name":"Brandstad Byporten",
    "street1":"Jernbanetorget",
    "street2":null,
    "zipcode":"0154",
    "city":"Oslo",
    "phone":"23362011",
    "fax":"22178889",
    "www":"http:\\/www.brandstad.no",
    "email":"bs.byporten@brandstad.no",
    "opening_hours":"Man-Fre 10-21, L",
    "active":"pending"
  }
]

Bu aslında tek bir nesneyi (kaşlı) içeren bir dizi (köşeli parantez) 'dir.

Yani yaptığınız çalıştığınızda:

alert(data.name);

Nesne dizinin ilk elemanı olarak bulunduğu için bu doğru değildir.

alert(data[0].name);

Beklediğiniz gibi çalışmalıdır.

JSON [] kıvırcık bitleri sarma [{}] ile ... bir javascript dizi olarak döndürülür

bu yüzden bu işe.

wrong:  alert(data.name);
right:  alert(data[0].name);

Hope that helps. D