如何在 jquery 中创建关联数组并通过 ajax 发送以使用 php 解析?

Posted

技术标签:

【中文标题】如何在 jquery 中创建关联数组并通过 ajax 发送以使用 php 解析?【英文标题】:How do I create an associate array in jquery and send it via ajax to get parsed with php? 【发布时间】:2011-03-30 17:59:21 【问题描述】:

我将如何在 jQuery 中创建一个关联数组(或一些类似的替代方法)并通过 ajax 将该数组发送到一个 php 页面,以便我可以使用 php 来处理它?

这样的……

// jQuery

if($something == true) 
    data[alt] = $(this).attr('alt');
    data[src] = $(this).attr('src');
else if ($something == "something else") 
    data[html] = $(this).html();

然后,使用 .ajax() 函数发送这个数组

// jQuery

$.ajax(
    data: /* somehow send my array here */,
    type: 'POST',
    url: myUrl,
    complete: function()
        // I'll do something cool here
    
);

最后,用php解析这些数据...

// php

<img  src="<?PHP echo $_POST['src']; ?>" />

我已经对该主题进行了一些谷歌搜索,并了解到您无法使用 javascript 创建关联数组,因此我真的只是在寻找一些替代方案。提前致谢。

【问题讨论】:

【参考方案1】:

您可以将数据作为对象传递给$.ajax(),如下所示:

var data = ;
if ($something == true) 
    data.alt = $(this).attr('alt');
    data.src = $(this).attr('src');
else if ($something == "something else") 
    data.html = $(this).html();


$.ajax(
    data: data,
    type: 'POST',
    url: myUrl,
    complete: function()
        // I'll do something cool here
    
);

这将为帖子序列化,内部使用$.param(obj) 将其转换为帖子,例如:

alt=thisAlt&src=thisSrc

或:

html=myEncodedHtml

【讨论】:

如何用 php 将这些回显出来? @Johnny - 就像您已经在问题中提出的那样,例如$_POST['alt']【参考方案2】:

只是发送一些json到php端,然后使用php中的json_decode函数在php端得到一个关联数组不是更简单吗?

【讨论】:

【参考方案3】:

关联数组是一种 PHP 的东西。但是您可以通过花括号 () 获得类似的东西。事实上,您已经在 $.ajax() 通话中使用了它。注意“”部分。在这种情况下,您可以在 PHP 服务器中使用json_decode() 来解码 'data' 参数:

 $.ajax(  
     url: myUrl,  
     data:    foo: 0,   bar: 1,   baz: 2   , 
     success: function()    , 
     dataType: 'json'  
 );

`

使用 json_decode() 会得到类似的结果:

php array('foo' => 0, 'bar' => 1, 'baz' => 2);

【讨论】:

如何像上面的代码一样一次添加一个键/值? var 数据 = ;数据['foo'] = 0;

以上是关于如何在 jquery 中创建关联数组并通过 ajax 发送以使用 php 解析?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 文字符号中创建关联数组

在 PHP 中创建关联数组的数组

在 bash 3 中创建关联数组

如何从数组中创建 jQuery 对象?

在 JavaScript 中创建一些关联数组

JQuery AJAX介绍