2016-04-06 16 views
0

Alışveriş sepetinde çalışıyorum. Şimdi veritabanına eklemek için localStorage'da depolanan php sayfasındaki alışveriş sepetine eklenen nesneler dizisini geçmem gerekiyor. Ben doğru submit_cart.php denilen bir php sayfasına bu JSON dizesi geçmek ve php sayfasında dizeyi almak için çalışıyorumJSON işlevini ajax ile PHP'ye nasıl aktarır ve alırsınız?

Şimdi
[{"name":"Banana","price":1.33,"count":5},{"name":"Apple","price":1.22,"count":5},{"name":"Shoe","price":22.33,"count":1}] 

, nasıl:

console.log(localStorage.getItem("shoppingCart")); 

Üstü aşağıdaki dışarı kaydeder Ben bunu yaparım? Şu anda boş veri gönderiyor ve alıyor. submit_cart.php olarak

$("#submit-cart").click(function(event){ 
       console.log("****TEST LOG ***"); 
       console.log(localStorage.getItem("shoppingCart")); 
       var data = localStorage.getItem("shoppingCart"); 
       $.ajax({ 
        type: "POST", 
        dataType: "json", 
        url: "submit_cart.php", 
        data: data, 
        success: function(data) { 
        console.log("******success******"); 
        console.log(data);//this logs [] 
        } 
       }); 
      }); 

önerilen cevap olarak

<?php 
$return = $_POST; 
$return["json"] = json_encode($return); 
$data = json_decode($return["json"], true); 

echo json_encode($return["json"]); 
    ?> 

EDITED ve şimdi çalışıyor:

$("#submit-cart").click(function(event){ 
       console.log("****TEST LOG ***"); 
       console.log(localStorage.getItem("shoppingCart")); 
       var data = localStorage.getItem("shoppingCart"); 

      $.ajax({ 
      type: "POST", 
      dataType: "json", 
      contentType: 'application/json', 
      url: "submit_cart.php", 
      data: data, 
      success: function(data) { 
      console.log("******success******"); 
      console.log(data);//this logs [] 
      } 
      }); 
      }); 

submit_cart.php

<?php 
$_POST = json_decode(file_get_contents('php://input'),true); 

print_r($_POST); 
    ?> 
+0

Aldığınız hata nedir? – urfusion

+0

ajax'ın başarılı fonksiyonunda boş veri alıyorum, yani ajax doğru bir şekilde veri göndermiyor ya da php doğru şekilde kodunu çözmüyor. – 112233

+0

Verilere değer atandıktan sonra bir uyarı yapın ve uyarı (data) gibi nasıl bir değer elde ettiğinizi görün; – LearningPhase

cevap

1

yılında ajax isteği Sette içerik türü json a php tarafında d php json okuyun: // giriş

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    contentType: 'application/json', 
    url: "submit_cart.php", 
    data: data, 
    success: function(data) { 
    console.log("******success******"); 
    console.log(data);//this logs [] 
    } 
}); 
$_POST = json_decode(file_get_contents('php://input'),true); 
// then use post as usual 
+0

Merhaba Musa, aptalca bir soru, neden PHP tarafından verildiği gibi '$ _POST' kullanmak yerine' file_get_contents ('php: // input') 'kullanıyorsunuz. Ben sadece ilgileniyorum, delik seçmemek! – RiggsFolly

+0

$ _POST yalnızca belirli içerik türleri için doldurulur, json bunlardan biri değildir – Musa

+0

'Uygulamanın/x-www-form-urlencoded veya multipart/form-kullanıldıklarında HTTP POST yöntemi üzerinden geçerli betiğe birleşik değişkenler dizisi aktarılır. request.' http://php.net/manual/en/reserved.variables.post.php –

1

Eğer $_POST değerleri almak istiyorsanız Hem yanlış. Sunucuya anahtar/değer çiftleri göndermeniz ve daha sonra bu anahtarlara $_POST numaralı telefondan erişebilirsiniz. Bir nesneyi gönderme jQuery Bir nesneyi kullandığınızda verileri doğru kodlama ilgilenir olarak iyi bir fikir her zaman olduğu

... 
var data = {json: localStorage.getItem("shoppingCart")}; 
... 

Not:

gibi bir şey yapabileceğini, 1 değişken her şeyi göndermek için. sizin ajax Yani

// you only need this, no additional encoding/decoding 
$data = json_decode($_POST["json"], true); 
+0

php ve başarı fonksiyonunda null olsun – 112233

+1

@Keren Düzeltilen kodu sorgunuzdaki orijinal versiyonun altına gönderebilir misiniz? ? – jeroen

0
Eğer söz konusu söz Olarak veriler zaten kodlanmış

console.log(localStorage.getItem("shoppingCart"));

çıkışı

[{"name":"Banana","price":1.33,"count":5},{"name":"Apple","price":1.22,"count":5},{"name":"Shoe","price":22.33,"count":1}] 

:

Sonra gibi php alabilirsiniz talep

data: { json_data:data} , 

Bu durumda veri nesne olarak çalışır ve değeri almak kolaydır.

ve php dosyasında

echo $_POST["json_data"]; 
+0

fakat neden başarı fonksiyonunda hiçbir şey elde edemiyorum? – 112233

+0

ajax isteği ile hangi verilerin gönderildiği için tarayıcı konsolunuzu kontrol edin. – urfusion

0

ajax verilerle veri göndermek here.Inside Hedef sayfaya herhangi bir veri gönderme değildir: parameter.Then yerine başarı fonksiyon kullanımı .done kullanmanın() fonksiyonu ajax dışında.İşlemi işlevi sonuç işleme açısından daha iyidir.Verilerinizin geliştirici alet ağı kullanılarak iletilip iletilmediğini kontrol edebilirsiniz.Tüm istek ve cevap verilerinin tamamı görüntülenir.İsteğe rağmen bu sorunu çözecektir.

İlgili konular