PHP serializeArray gelen POST değerleri almak nasıl?

4 Cevap php

Ben serializeArray() gördüğüm bu yeni yöntemi çalışıyorum.

//with ajax
var data = $("#form :input").serializeArray();
post_var = {'action': 'process', 'data': data };
$.ajax({.....etc

Yani bu anahtar değer çifti olsun, ama nasıl PHP ile erişebilirim?

Ben bunu yapmak için gerekli düşündüm, ama bu iş olmaz:

// in PHP script
$data = json_decode($_POST['data'], true);

var_dump($data);// will return NULL?

Teşekkürler, Richard

4 Cevap

Like Gumbo suggested, you are likely not processing the return value of json_decode.
Try

$data = json_decode($_POST['data'], true);
var_dump($data);

$data beklenen veri içermiyorsa, o zaman var_dump($_POST); Ajax arama Betiğinize yazı ne yaptığını görmek için. Eğer yanlış anahtarla gelen JSON erişmeye çalıştığınız olabilir.

EDIT
Actually, you should make sure that you are really sending JSON in the first place :)
The jQuery docs for serialize state The .serializeArray() method creates a JavaScript array of objects, ready to be encoded as a JSON string. Ready to be encoded is not JSON. Apparently, there is no Object2JSON function in jQuery so either use https://github.com/douglascrockford/JSON-js/blob/master/json2.js as a 3rd party lib or use http://api.jquery.com/serialize/ instead.

Döndürülen JSON yapısı bir dize değil. Bunu "stringify" için bir eklenti veya üçüncü taraf kitaplığı kullanmanız gerekir. Daha fazla bilgi için Bu bakınız:

http://www.tutorialspoint.com/jquery/ajax-serializearray.htm

OP aslında hala aşağıdaki değişiklikleri yaparak serializeArray () yerine sadece serialize arasında () kullanılmış olabilir:

//JS 
var data = $("#form :input").serializeArray();
data = JSON.stringify(data);
post_var = {'action': 'process', 'data': data };
$.ajax({.....etc

// PHP
$data = json_decode(stripslashes($_POST['data']),true);
print_r($data); // this will print out the post data as an associative array

javascript değerleri yayınlanmıştır olsun biçimini değiştirmek olmaz değil mi? Her zamanki gibi $_POST['name_of_input_goes_here'] ile PHP ile değerlerine erişmek mümkün olmamalı

edit: her zaman print_r($_POST) kullanarak javascript form teslim dan alıyoruz görmek için $ _POST içeriğini dökümü olabilir. İşte size ihtiyacınız verilere erişmek için PHP yapmak gerekir ne hakkında bir fikir verecektir.