如何在jquery中创建一个关联数组并通过ajax发送它来解析php?

时间:2010-08-17 01:47:11

标签: php javascript jquery ajax arrays

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

像这样......

// 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 alt="<?PHP echo $_POST['alt']; ?>" src="<?PHP echo $_POST['src']; ?>" />

我已经对这个主题进行了一些谷歌搜索,并且已经读过你不能用javascript创建一个关联数组,所以我真的只是在寻找一些替代方案。提前谢谢。

3 个答案:

答案 0 :(得分:4)

您可以将数据作为对象传递给$.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)将其转换为POST,例如:

alt=thisAlt&src=thisSrc

或:

html=myEncodedHtml

答案 1 :(得分:0)

将一些json发送到php端是不是更简单,然后使用php中的json_decode函数来获取php端的关联数组?

答案 2 :(得分:0)

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

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

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

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