gpt4 book ai didi

php - 如何通过 jQuery Ajax 调用使用 GET 方法对发送到服务器的序列化数组进行反序列化?

转载 作者:行者123 更新时间:2023-12-01 04:20:29 24 4
gpt4 key购买 nike

我正在尝试从 JQuery Ajax 调用发送到服务器中 PHP 脚本的 URL 中反序列化数组。

我做了什么

我已经通过这种方式使用 jQuery Ajax 成功地将带有值的变量发送到服务器:

// A simple text from an HTML element:
var price = $("#price option:selected").val();
// Yet another simple text:
var term1 = $('#term1').val();

然后我这样准备要通过 Ajax 发送的数据:

var data = 'price=' + price + '&term1=' + term1;
//if I alert it, I get this: price=priceString&term1=termString

并使用 jQuery Ajax 发送它,如下所示:

$.ajax({
url: "script.php",
type: "GET",
data: data,
cache: false,
dataType:'html',
success: function (html) {
// Do something successful
}
});

然后我通过这种方式将其获取到服务器中:

$price = (isset($_GET['price'])) ? $_GET['price'] : null;
$term1 = (isset($_GET['term1'])) ? $_GET['term1'] : null;

我可以根据需要轻松使用变量。但是,我需要使用数组来执行此操作。

主要问题

阅读了很多书,我已经学会了将数组发送到服务器的专业方法:序列化它!我已经学会了用 jQuery 实现这一点的方法:

var array_selected = [];
// This is used to get all options in a listbox, no problems here:
$('#SelectIt option:not(:selected), #SelectIt option:selected').each(function() {
array_selected.push({ name: $(this).val(), value: $(this).html().substring($(this).html().indexOf(' '))});
});
var array_serialized = jQuery.param(array_selected);
// If I alert this I get my array serialized successfully with in the form of number=string:
//Ex. 123=stringOne&321=StringTwo

这似乎是对的。我像以前一样将其添加到数据中:

var data = 'price=' + price + '&' + array_selected + '&term1=' + term1;
//if I alert it, I get this: price=priceString&term1=termString&123=stringOne&321=StringTwo

如何在服务器中重建(反序列化)我的数组?我已经尝试过与以前相同的方法:

$array_serialized = (isset($_GET['array_serialized'])) ? $_GET['array_serialized'] : null;

没有成功!有什么想法吗?如何让我的序列化数组以这种方式在服务器中作为 PHP 可以处理的另一个数组传递,以便我可以使用它?

还是我自己让自己的生活不必要地复杂化了?我想要的只是将数组发送到服务器。

最佳答案

如果您以 [] 结尾命名一个变量,它将根据使用该名称传递的值创建一个数组。

例如,http://www.example.com/?data[]=hello&data[]=world&data[]=test,将生成数组$_GET["data"] == array('hello', 'world', 'test'); 在 PHP 中创建。

以同样的方式,您可以在 PHP 中创建关联数组:http://www.example.com/?data[first]=foo&data[second]=bar 将导致 $_GET["data"] == array("first"=> "foo", "second"=> "bar");

顺便说一句,您可能有兴趣使用 jQuery 的 .serialize().serializeArray() ,如果这些适合您的客户端序列化需求。

关于php - 如何通过 jQuery Ajax 调用使用 GET 方法对发送到服务器的序列化数组进行反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11092760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com