ব্যবহার করে $('#form').serialize()
, আমি এটি পিএইচপি পৃষ্ঠায় প্রেরণ করতে সক্ষম হয়েছি। এখন আমি কীভাবে এটি পিএইচপি-তে আনসিরিয়ালাইজ করব? এটি জিকিউরিয়ায় সিরিয়ালযুক্ত হয়েছিল।
ব্যবহার করে $('#form').serialize()
, আমি এটি পিএইচপি পৃষ্ঠায় প্রেরণ করতে সক্ষম হয়েছি। এখন আমি কীভাবে এটি পিএইচপি-তে আনসিরিয়ালাইজ করব? এটি জিকিউরিয়ায় সিরিয়ালযুক্ত হয়েছিল।
উত্তর:
Jquery serialize
পদ্ধতি থেকে আপনাকে পিএইচপি-তে কোনও কিছুর আনসিরিয়ালাইজ করা উচিত নয় । আপনি যদি ডেটাটিকে সিরিয়ালাইজ করে থাকেন তবে আপনি যদি কোনও জিইটি পদ্ধতি এজ্যাক্স অনুরোধ ব্যবহার করছেন বা যদি আপনি কোনও পোষ্ট এজ্যাক্স অনুরোধ ব্যবহার করছেন তবে কোয়েরি প্যারামিটার হিসাবে পিএইচপিকে পাঠানো উচিত। পিএইচপি সুতরাং, আপনি মত মান অ্যাক্সেস হবে $_POST["varname"]
বা $_GET["varname"]
অনুরোধ ধরনের উপর নির্ভর করে।
serialize
পদ্ধতি মাত্র ফর্ম উপাদানের নেয় ও সেগুলিকে স্ট্রিং আকারে রাখে।"varname=val&var2=val2"
serialize
ফিরে আসা স্ট্রিংটিকে বিশ্লেষণ করতে হবে । নীচে সত্যই জনপ্রিয় উত্তর দেখুন।
প্রদত্ত যে আপনার সার্ভারটি এমন স্ট্রিং পাচ্ছে যা দেখতে এরকম কিছু দেখাচ্ছে (আপনি যদি jQuery ব্যবহার করেন তবে এটি হওয়া উচিত serialize()
):
"param1=someVal¶m2=someOtherVal"
... এর মতো কিছু সম্ভবত আপনার প্রয়োজন:
$params = array();
parse_str($_GET, $params);
$params
তারপরে এমন একটি অ্যারে মডেল হওয়া উচিত যা আপনি কীভাবে আশা করতে পারেন। নোট করুন এটি এইচটিএমএল অ্যারেতেও কাজ করে।
আরও তথ্যের জন্য নিম্নলিখিতটি দেখুন: http://www.php.net/manual/en/function.parse-str.php
আশা করি এটি সহায়ক। শুভকামনা!
// jQuery পোস্ট
var arraydata = $('.selector').serialize();
// jquery.post সিরিয়ালযুক্ত ভার - টু - পিএইচপি অ্যারে ফর্ম্যাট
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);
}
?>
এই পিএইচপি কোড, রিটার্ন 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);
}
});
তারপরে আপনি পিপিএসটি অ্যারে কীগুলি অ্যাক্সেস করতে পারেন যেমন আপনি সাধারণত পিএইচপি করতে পারেন। শুধু একটি দিয়ে চেষ্টা করুন print_r()
।
আমি মনে করি আপনি কোনও বস্তুর সম্পত্তিতে সিরিয়ালযুক্ত ফর্মের মানটি মুড়িয়ে দিচ্ছেন, যা আমার জানা হিসাবে অব্যর্থ।
আশাকরি এটা সাহায্য করবে!
এটি ব্যবহারকারী 1256561 এর জবাবে। আপনার ধারণার জন্য ধন্যবাদ .. তবে আমি স্টিপি 3-তে উল্লিখিত ইউআরএল ডিকোড জিনিসগুলির যত্ন নিই নি।
সুতরাং এখানে পিএইচপি কোডটি সিরিয়ালযুক্ত ফর্ম ডেটা ডিকোড করবে, অন্য কারও যদি এটির প্রয়োজন হয়। যাইহোক, নিজের বিবেচনার ভিত্তিতে এই কোডটি ব্যবহার করুন।
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);
}
ইউআরএল পোস্টের ডেটা ইনপুটটি এরকম হবে: অ্যাট্রিবিউট 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);
})
}
পিএইচপি - 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();
পিএইচপি আরে পান, আনসিরিয়ালাইজ করা দরকার না;)
আমি মনে করি আপনাকে ফর্মের নামগুলি এর মানগুলি থেকে আলাদা করতে হবে, এটি করার একটি পদ্ধতি হ'ল বিস্ফোরিত করা (&)
যাতে আপনি পাবেন attribute=value,attribute2=value
।
এখানে আমার বক্তব্যটি হল যে আপনি সিরিয়ালযুক্ত jQuery স্ট্রিংটিকে পিএইচপি-তে অ্যারে রূপান্তর করবেন।
আপনার আরও নির্দিষ্ট হওয়ার জন্য যে পদক্ষেপগুলি অনুসরণ করা উচিত তা এখানে।
jQuery
এমন একটি PHP
পৃষ্ঠায় পাস হয়েছে (উদাঃ ajax.php
) যেখানে আপনি $.ajax
পোস্ট ব্যবহার করে জমা দিতে বা পেতে ব্যবহার করেন।(&)
প্রতিটি বৈশিষ্ট্য পৃথক করে এভাবে বিস্ফোরিত করুন । এখন আপনি বৈশিষ্ট্য 1 = মান, গুণ 2 = মান পাবেন, এখন আপনি একটি পিএইচপি অ্যারে ভেরিয়েবল পাবেন। যেমন$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' );