मैं, JQuery का उपयोग कर किसी वेब पृष्ठ से JSON डेटा भेजने के लिए कोशिश कर रहा हूँ इस तरह में json डेटा पुनः प्राप्त:CakePHP 2.2 नियंत्रक
$.ajax({
type: "post", // Request method: post, get
url: "http://localhost/ajax/login",
data: '{username: "wiiNinja", password: "isAnub"}',
dataType: "json", // Expected response type
contentType: "application/json",
cache: false,
success: function(response, status) {
alert ("Success");
},
error: function(response, status) {
alert('Error! response=' + response + " status=" + status);
}
});
cake2.2 में, मैं अजाक्स नाम के एक नियंत्रक के लिए एक विधि है कि है "प्रवेश" का नाम दिया, इस तरह:
public function login($id = null)
{
if ($this->RequestHandler->isAjax())
{
$this->layout = 'ajax'; // Or $this->RequestHandler->ajaxLayout, Only use for HTML
$this->autoLayout = false;
$this->autoRender = false;
$response = array('success' => false);
$data = $this->request->input(); // MY QUESTION IS WITH THIS LINE
debug($data, $showHTML = false, $showFrom = true);
}
return;
}
मैं सिर्फ अगर मैं नियंत्रक करने के लिए सही डेटा में गुजर रहा हूँ देखना चाहते हैं। अगर मैं इस लाइन का उपयोग करें:
$data = $this->request->input();
मैं डिबग प्रिंटआउट देख सकते हैं:
{username: "wiiNinja", password: "isCool"}
मैं CakePHP मैनुअल 2.x में पढ़ा है, के तहत "को एक्सेस करना XML या JSON डेटा", यह इस कॉल का सुझाव
$data = $this->request->input('json_decode');
जब मैं प्रिंट $ डेटा डिबग, मैं "अशक्त" मिलती है: डेटा को डिकोड करने के। मैं क्या गलत कर रहा हूं? क्या मेरा डेटा जावास्क्रिप्ट से गलत है? या मैं डीकोड सही ढंग से नहीं बुला रहा हूँ?
किसी भी सुझाव के लिए धन्यवाद।
============= मेरा अपना संपादित ========
प्रयोगों के माध्यम से अपने खुद के गलती मिला:
जब बजाय जावास्क्रिप्ट के माध्यम से पोस्ट करते समय, इस लाइन:
data: '{"username": "wiiNinja", "password": "isAnub"}',
और
+०१२३५१६४१०६१:data: '{username: "wiiNinja", password: "isAnub"}',
इसे करने के लिए बदलें
$data = $this->request->input('json_decode');
करने के लिए::
$data = $this->request->input('json_decode', 'true');
यह काम करता है
नियंत्रक कोड में, इस लाइन बदल जाते हैं।
array(
'plugin' => null,
'controller' => 'ajax',
'action' => 'login',
'named' => array(),
'pass' => array(),
'isAjax' => true
)
:
Dunhamzzz,
जब मैं अपने सुझाव का पालन किया, और मेरे नियंत्रक कोड में "$ this-> अनुरोध> पैरामीटर" सरणी की जांच, यह निम्न शामिल जैसा कि आप देख सकते हैं, मैं जो डेटा ढूंढ रहा हूं वह वहां नहीं है। मुझे पहले से ही उचित मार्ग कोड मिल गया है। यह वही है 2.x के लिए प्रलेखन यहाँ का कहना है के साथ संगत है:
http://book.cakephp.org/2.0/en/controllers/request-response.html
अब तक, एक ही रास्ता है कि मैं यह काम करने के लिए मिल गया है, के रूप में "मेरा अपना संपादित करें" में ऊपर कहा गया है है। लेकिन अगर सर्वर पर जेएसओएन स्ट्रिंग भेजना सही नहीं है, तो मैं इसे ठीक करना चाहता हूं, क्योंकि आखिरकार, मुझे तीसरे पक्ष कोड को संभालना होगा जो जेएसओएन ऑब्जेक्ट्स भेज देगा।