का उपयोग करते हुए $('#form').serialize()
, मैं इसे एक PHP पृष्ठ पर भेजने में सक्षम था। अब मैं इसे PHP में कैसे अनसुना करूँ? इसे jQuery में क्रमबद्ध किया गया था।
का उपयोग करते हुए $('#form').serialize()
, मैं इसे एक PHP पृष्ठ पर भेजने में सक्षम था। अब मैं इसे PHP में कैसे अनसुना करूँ? इसे jQuery में क्रमबद्ध किया गया था।
जवाबों:
आपको jquery serialize
विधि से PHP में कुछ भी अनसुना नहीं करना चाहिए । यदि आप डेटा को क्रमबद्ध करते हैं, तो इसे पीएचपी को क्वेरी पैरामीटर के रूप में भेजा जाना चाहिए यदि आप एक पोस्ट विधि अजाक्स अनुरोध या पोस्ट संस्करण का उपयोग कर रहे हैं यदि आप एक पोस्ट अजाक्स अनुरोध का उपयोग कर रहे हैं। PHP में तो, आप की तरह मानों तक पहुंच जाएगा $_POST["varname"]
या $_GET["varname"]
अनुरोध प्रकार के आधार पर।
serialize
विधि सिर्फ फार्म तत्वों लेता है और उन्हें स्ट्रिंग के रूप में डालता है।"varname=val&var2=val2"
serialize
वापस आती है। नीचे वास्तव में लोकप्रिय जवाब देखें।
बशर्ते कि आपका सर्वर एक स्ट्रिंग प्राप्त कर रहा है जो कुछ इस तरह दिखता है (जो कि अगर आपको jQuery का उपयोग कर रहा है तो यह होना चाहिए serialize()
):
"param1=someVal¶m2=someOtherVal"
... ऐसा कुछ है जो शायद आप सभी की जरूरत है:
$params = array();
parse_str($_GET, $params);
$params
तब एक सरणी होनी चाहिए कि आप कैसे उम्मीद करेंगे। ध्यान दें कि यह काम HTML सरणियों के साथ भी है।
अधिक जानकारी के लिए निम्नलिखित देखें: http://www.php.net/manual/en/function.parse-str.php
आशा है कि सहायक होगा। सौभाग्य!
// jQuery पोस्ट
var arraydata = $('.selector').serialize();
// jquery.post क्रमबद्ध var - TO - PHP Array प्रारूप
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
// आपको इसमें से कोई भी समान मिलता है
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
में एचटीएमएल पेज:
<script>
function insert_tag()
{
$.ajax({
url: "aaa.php",
type: "POST",
data: {
ssd: "yes",
data: $("#form_insert").serialize()
},
dataType: "JSON",
success: function (jsonStr) {
$("#result1").html(jsonStr['back_message']);
}
});
}
</script>
<form id="form_insert">
<input type="text" name="f1" value="a"/>
<input type="text" name="f2" value="b"/>
<input type="text" name="f3" value="c"/>
<input type="text" name="f4" value="d"/>
<div onclick="insert_tag();"><b>OK</b></div>
<div id="result1">...</div>
</form>
पर पीएचपी पेज:
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
इस php कोड पर, रिटर्न f1
फील्ड।
साहचर्य सरणी का उपयोग क्यों न करें, ताकि आप इसे आसानी से उपयोग कर सकें
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
$returndata[$array[0]] = $array[1];
}
return $returndata;
}
सादर
$i = 0;
संशोधित मुर्तजा हुसैन जवाब:
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
सीधे शब्दों में यह कर
$get = explode('&', $_POST['seri']); // explode with and
foreach ($get as $key => $value) {
$need[substr($value, 0 , strpos($value, '='))] = substr(
$value,
strpos( $value, '=' ) + 1
);
}
// access your query param name=ddd&email=aaaaa&username=wwwww&password=wwww&password=eeee
var_dump($need['name']);
मैं नहीं जानता कि आप कौन से Jquery के संस्करण का उपयोग कर रहे हैं, लेकिन यह मेरे लिए jquery 1.3 में काम करता है:
$.ajax({
type: 'POST',
url: your url,
data: $('#'+form_id).serialize(),
success: function(data) {
$('#debug').html(data);
}
});
तब आप POST सरणी कुंजियों तक पहुँच सकते हैं जैसा कि आप सामान्य रूप से php में करते हैं। बस एक के साथ प्रयास करेंprint_r()
।
मुझे लगता है कि आप किसी ऑब्जेक्ट की संपत्ति में क्रमबद्ध फॉर्म वैल्यू को लपेट रहे हैं, जो कि मुझे पता है कि बेकार है।
उम्मीद है की यह मदद करेगा!
यह user1256561 के उत्तर में है। आपके विचार के लिए धन्यवाद .. हालाँकि मैंने step3 में उल्लिखित url डीकोड सामान का ध्यान नहीं रखा है।
तो यहाँ php कोड है जो क्रमबद्ध रूप डेटा को डिकोड करेगा, अगर किसी और को इसकी आवश्यकता है। वैसे, इस कोड का उपयोग अपने विवेक से करें।
function xyz($strfromAjaxPOST)
{
$array = "";
$returndata = "";
$strArray = explode("&", $strfromPOST);
$i = 0;
foreach ($strArray as $str)
{
$array = explode("=", $str);
$returndata[$i] = $array[0];
$i = $i + 1;
$returndata[$i] = $array[1];
$i = $i + 1;
}
print_r($returndata);
}
Url पोस्ट डेटा इनपुट इस प्रकार होगा: विशेषता 1 = मान 1 और गुण 2 = मान 2 और गुण 3 = मान 3 और इतने पर
उपरोक्त कोड का आउटपुट अभी भी एक एरे में होगा और आप इसे संशोधित करके किसी भी वैरिएबल को दे सकते हैं जिसे आप चाहते हैं और यह इस बात पर निर्भर करता है कि आप इस डेटा का आगे कैसे उपयोग करना चाहते हैं।
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
आपको केवल फॉर्म में मूल्य विशेषता नाम की आवश्यकता है। उदाहरण :
प्रपत्र
<form id="login_form">
<input type="text" name="username" id="a"/>
<input type="password" name="password" id="b"/>
<button type="button" onclick="login()">Submit</button>
</form>
जावास्क्रिप्ट
$(document).ready(function(){});
function login(){
var obj = $('#login_form').serialize();
$.post('index.php', obj, function(res){
alert(res);
})
}
PHP - index.php
<?php
if(!empty($POST['username']) && !empty($POST['password'])){
$user = $POST['username'];
$pass = $POST['password'];
$res = "Username : ".$user." || Password : ".$pass;
return $res;
}
?>
उपयोग:
$( '#form' ).serializeArray();
Php को सरणी मिलती है, न की आवश्यकता होती है;)
मुझे लगता है कि आपको प्रपत्र नामों को इसके मूल्यों से अलग करने की आवश्यकता है, ऐसा करने के लिए एक तरीका यह है (&)
कि आप विस्फोट करेंगे attribute=value,attribute2=value
।
मेरा कहना यह है कि आप PHP में क्रमबद्ध jQuery स्ट्रिंग को सरणियों में बदल देंगे।
यहां वह चरण दिए गए हैं जिनका आपको अधिक विशिष्ट होना चाहिए।
jQuery
एक PHP
पृष्ठ (जैसे ajax.php
) पर अनुक्रमित पर उत्तीर्ण जहां आप $.ajax
पोस्ट का उपयोग कर सबमिट करने या प्राप्त करने के लिए उपयोग करते हैं।(&)
प्रकार प्रत्येक गुण को अलग करते हुए । अब आपको attribute1 = value, attribute2 = value मिलेगा, अब आपको php array वैरिएबल मिलेगा। जैसे$data =
array("attribute1=value","attribute2=value")
foreach
करें $data
और explode
करें (=)
ताकि आप विशेषता को मूल्य से अलग कर सकें, और मूल्य के लिए सुनिश्चित हो urldecode
ताकि यह क्रमबद्ध मानों को आपके द्वारा आवश्यक मान में परिवर्तित कर दे, और विशेषता और उसके मूल्य को एक नए सरणी चर में सम्मिलित करें, जो विशेषता और क्रमबद्ध स्ट्रिंग के मूल्य को संग्रहीत करता है।यदि आपको अधिक स्पष्टीकरण की आवश्यकता है, तो मुझे बताएं।
आप इस फ़ंक्शन का उपयोग कर सकते हैं:
function post_unserialize( $key ){
$post_data = array();
$post_data = $_POST[ $key ];
unset($_POST[ $key ]);
parse_str($post_data, $post_data);
$_POST = array_merge($_POST, $post_data);
}
इसे कैसे उपयोग करे
$_POST['serialized_data'] = 'var1=1&var2=2&var3=3';
post_unserialize( 'serialized_data' );