Sử dụng $('#form').serialize()
, tôi đã có thể gửi trang này qua trang PHP. Bây giờ làm thế nào để tôi unserialize nó trong PHP? Nó đã được tuần tự hóa trong jQuery.Làm thế nào để tôi-unserialize một hình thức jQuery-serialized?
Trả lời
Bạn không cần phải unserialize bất kỳ thứ gì trong PHP từ phương thức jquery serialize
. Nếu bạn tuần tự hóa dữ liệu, nó sẽ được gửi đến PHP dưới dạng tham số truy vấn nếu bạn đang sử dụng một phương thức GET ajax request hoặc post vars nếu bạn đang sử dụng một yêu cầu ajax POST. Vì vậy, trong PHP, bạn sẽ truy cập các giá trị như $_POST["varname"]
hoặc $_GET["varname"]
tùy thuộc vào loại yêu cầu.
Phương thức serialize
chỉ lấy các phần tử biểu mẫu và đặt chúng dưới dạng chuỗi. "varname=val&var2=val2"
Cảm ơn bạn Chris !! –
"đã" * nháy mắt *;) – JohnnyQ
parse_str($_POST['whatever'], $searcharray);
Với điều kiện là máy chủ của bạn đang nhận được một chuỗi trông giống như thế này (mà nó nên nếu bạn đang sử dụng jQuery serialize()
):
"param1=someVal¶m2=someOtherVal"
... một cái gì đó như thế này có lẽ là tất cả bạn cần:
$params = array();
parse_str($_GET, $params);
$params
sau đó sẽ là một mảng được mô hình hóa theo cách bạn mong đợi. Lưu ý điều này cũng làm việc với các mảng HTML.
Xem sau để biết thêm thông tin: http://www.php.net/manual/en/function.parse-str.php
Hy vọng rằng sẽ rất hữu ích. Chúc may mắn!
Tôi không biết phiên bản nào của Jquery bạn đang sử dụng, nhưng hoạt động này đối với tôi trong jquery 1.3:
$.ajax({
type: 'POST',
url: your url,
data: $('#'+form_id).serialize(),
success: function(data) {
$('#debug').html(data);
}
});
Sau đó, bạn có thể truy cập các phím mảng POST như bạn vẫn thường làm trong php. Chỉ cần thử với một số print_r()
.
Tôi nghĩ rằng bạn đang gói giá trị biểu mẫu được tuần tự hóa trong thuộc tính của đối tượng, điều đó là vô dụng theo như tôi biết.
Hy vọng điều này sẽ hữu ích!
Tôi nghĩ bạn cần tách tên biểu mẫu khỏi giá trị của nó, một phương pháp để thực hiện việc này là phát nổ (&)
để bạn sẽ nhận được attribute=value,attribute2=value
.
Điểm của tôi ở đây là bạn sẽ chuyển đổi chuỗi jQuery được tuần tự hóa thành các mảng trong PHP.
Đây là các bước bạn nên làm theo để cụ thể hơn.
- Qua trên serialized
jQuery
đến một trangPHP
(ví dụajax.php
) nơi bạn sử dụng$.ajax
để gửi bằng đường bưu điện hoặc nhận được. - Từ trang php của bạn, hãy phát nổ số
(&)
do đó tách từng thuộc tính . Bây giờ bạn sẽ nhận được attribute1 = value, attribute2 = value, bây giờ bạn sẽ nhận được một biến mảng php. e.g$data = array("attribute1=value","attribute2=value")
- Thực hiện
foreach
trên$data
vàexplode
các(=)
để bạn có thể tách các thuộc tính từ giá trị, và hãy chắc chắnurldecode
giá trị để nó sẽ chuyển đổi các giá trị tuần tự với giá trị mà bạn cần, và chèn thuộc tính và giá trị của nó vào một mảng mới biến, lưu trữ thuộc tính và giá trị của chuỗi được tuần tự hóa.
Hãy cho tôi biết nếu bạn cần giải thích thêm.
Đây là thư trả lời cho user1256561. Cảm ơn ý tưởng của bạn .. tuy nhiên tôi đã không được chăm sóc của các công cụ giải mã url được đề cập trong bước 3.
vì vậy, đây là mã php sẽ giải mã dữ liệu biểu mẫu được tuần tự hóa, nếu có ai khác cần dữ liệu đó. Nhân tiện, hãy sử dụng mã này theo quyết định của riêng bạn.
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 đầu vào bài dữ liệu sẽ như thế nào: attribute1 = value1 & attribute2 = value2 & attribute3 = value3 và vân vân
Sản lượng mã trên vẫn sẽ nằm trong một mảng và bạn có thể sửa đổi nó để có được nó được gán cho bất kỳ biến nào bạn muốn và nó phụ thuộc vào cách bạn muốn sử dụng dữ liệu này hơn nữa.
Array
(
[0] => attribute1
[1] => value1
[2] => attribute2
[3] => value2
[4] => attribute3
[5] => value3
)
// jQuery bài
var arraydata = $('.selector').serialize();
// serialized jquery.post var - TO - PHP dạng mảng
parse_str($_POST[arraydata], $searcharray);
print_r($searcharray); // Only for print array
// Bạn nhận được bất kỳ cùng mà
Array (
[A] => 1
[B] => 2
[C] => 3
[D] => 4
[E] => 5
[F] => 6
[G] => 7
[H] => 8
)
Đó là chính xác những gì tôi đang tìm kiếm! –
Tại sao không sử dụng mảng kết hợp, vì vậy bạn có thể sử dụng nó asily
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
$returndata[$array[0]] = $array[1];
}
return $returndata;
}
Trân
Tôi không nhận được '$ i = 0;' – Thielicious
Trong HTML trang:
<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>
trên PHP page:
<?php
if(isset($_POST['data']))
{
parse_str($_POST['data'], $searcharray);
$data = array(
"back_message" => $searcharray['f1']
);
echo json_encode($data);
}
?>
trên mã php này, trở về f1
lĩnh vực.
Modified Murtaza Hussain câu trả lời:
function unserializeForm($str) {
$strArray = explode("&", $str);
foreach($strArray as $item) {
$array = explode("=", $item);
$returndata[] = $array;
}
return $returndata;
}
Bạn chỉ cần giá trị tên thuộc tính trong mẫu.Ví dụ:
Mẫu
<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>
Javascript
$(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;
}
?>
Đơn giản chỉ cần làm điều này
$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']);
- 1. Làm thế nào để làm một hình thức phi mô hình trong ruby trên đường ray?
- 2. Làm thế nào để tùy chỉnh hình thức django nhãn
- 3. Làm thế nào để sửa đổi một công thức homebrew?
- 4. Làm thế nào để tải lên một hình ảnh với python-tornado từ một hình thức HTML?
- 5. Làm thế nào để ép buộc phương pháp cho một hình thức formtastic được đặt?
- 6. Làm thế nào để chỉnh sửa Rails serialized băm trong một hình thức?
- 7. Làm thế nào để vượt qua một tham số giữa hai hình thức trong Axapta?
- 8. Làm thế nào để gửi nhiều hình thức cùng loại với một nút trong symfony2
- 9. Làm thế nào để cập nhật một đối tượng từ hình thức chỉnh sửa trong Django?
- 10. Làm thế nào để ngăn chặn một hình thức WPF mới từ ăn cắp tập trung?
- 11. Làm thế nào để bạn viết một phương pháp lưu cho các hình thức trong django?
- 12. Symfony2: Làm thế nào để sửa đổi một giá trị hình thức trước khi xác nhận
- 13. Làm thế nào để loại bỏ \ trước dấu ngoặc kép trong một hình thức đầu vào
- 14. Làm thế nào để có được hình thức cha mẹ của một đầu vào?
- 15. Làm thế nào để thiết lập một nhiều hình thức trong Symfony2
- 16. Làm thế nào để biết nếu một hình thức được hiển thị như thoại
- 17. làm thế nào để vượt qua một mảng để một kịch bản perl cgi với một hình thức HTML?
- 18. Làm thế nào để đọc một hình ảnh với PHP?
- 19. Làm thế nào để viết một biểu thức Lambda VB.Net
- 20. Làm thế nào để thêm tham số bổ sung trên một hình thức, trình nó với phương thức GET
- 21. Làm thế nào để ngăn chặn một số hình thức đầu vào nhất định khi viết các phương thức?
- 22. làm thế nào để thêm lớp học để hình thức dao cạo và cho padding?
- 23. Làm thế nào để sử dụng jQuery ajax để hình thức hành động của tôi
- 24. Làm thế nào để đóng một hình ảnh?
- 25. Làm thế nào để cắt một hình ảnh trong vb.net?
- 26. Làm thế nào để cắt một hình ảnh trong Android?
- 27. Làm thế nào để TILE một hình nền trong WinRT?
- 28. Làm thế nào để có được một mảng hình ảnh?
- 29. Làm thế nào để vượt qua một giá trị hình thức đầu vào thành một hàm JavaScript
- 30. Làm thế nào để thêm các mục vào một combobox trong một hình thức trong VBA excel?
Đối với những câu hỏi như thế này, tôi khuyên bạn nên sử dụng Firebug để xem dữ liệu nào được định dạng tới máy chủ. Sau đó, bạn có thể dễ dàng đăng ví dụ về dữ liệu của mình. – chiborg