2015-10-08 9 views
9

मैं एक लैरवेल नौसिखिया हूं और मैं एक php/jquery ऐप को लार्वेल में परिवर्तित कर रहा हूं। मूल कोड एक ajax पोस्ट है, जो इस तरह प्राप्त की गई थी के साथ एक JSON सारणी का प्रयोग किया:

$json = file_get_contents('php://input'); 
$data = json_decode($json,true); 

मैं बहुत पोस्ट पक्ष पर एक ही बात कर रहा हूँ, लेकिन मैं किसी भी डेटा में के माध्यम से आने वाले नहीं दिख रहा है मेरी Laravel $ अनुरोध संग्रह। वहाँ कुछ खास है कि मैं इस तरह से संरचित JSON डेटा पुनः प्राप्त करने के क्या करने की जरूरत है:

[ 
    { "name": "John", "location": "Boston" }, 
    { "name": "Dave", "location": "Lancaster" } 
] 

यहाँ है मेरी jQuery ajax पोस्ट कोड (हार्ड कोडित डेटा के साथ)

$.ajax({ 
    type: "POST", 
    url: "/people", 
    data: '[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]', 
    dataType: "json", 
    success:function(data) { 
     $('#save_message').html(data.message); 
    } 
}); 

यहाँ में कोड है मेरी नियंत्रक कि पोस्ट

public function store(Request $request) 
{ 
    dd($request->all()); 
} 

प्राप्त करता है लेकिन सब मुझे मिलता है:

[]

कोई भी विचार है कि मैं अपने डेटा को कैसे पुनः प्राप्त कर सकता हूं?

उत्तर

11

आप dataTypecontentType को

$.ajax({ 
    type: "POST", 
    url: "/people", 
    data: '[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]', 
    contentType: "json", 
    processData: false, 
    success:function(data) { 
     $('#save_message').html(data.message); 
    } 
}); 

परिवर्तन करने के लिए अपने अजाक्स कॉल बदल सकते हैं और processData विकल्प जोड़ने के लिए की जरूरत है।

अपने नियंत्रक से JSON पेलोड को पुनः प्राप्त करने के लिए, का उपयोग करें:

dd(json_decode($request->getContent(), true)); 

बजाय

dd($request->all()); 
+1

अफसोस की बात है, मुझे अभी भी मेरे लैरावेल नियंत्रक में कोई डेटा नहीं मिला - बस []। हालांकि मैं देख सकता हूं कि हेडर ** फॉर्म डेटा ** से ** ** में पेलोड का अनुरोध ** – Adam

+1

मैंने अपनी प्रतिक्रिया अपडेट की है, आपको नियंत्रक में इनपुट प्राप्त करने के तरीके को बदलने की जरूरत है। –

+0

मैंने अनुरोधों के बारे में कुछ नया सीखा –

10
$postbody=''; 
// Check for presence of a body in the request 
if (count($request->json()->all())) { 
    $postbody = $request->json()->all(); 
} 

इस तरह यह अब laravel 5.2 में किया गया है।

संबंधित मुद्दे