简体   繁体   中英

How do I create an associate array in jquery and send it via ajax to get parsed with php?

How would I make an associative array (or some comparable alternative) in jQuery AND send that array via ajax to a php page so that I can use php to handle it?

Something like this...

// jQuery

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

Then, send this array using the .ajax() function

// jQuery

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

Finally, parse this data with php...

// php

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

I've done a little googling on the subject and have read that you cannot make an associative array with javascript so I'm really just looking for some alternative. Thanks in advance.

You can pass the data as an object to $.ajax() , like this:

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
    }
});

This will get serialized for the post, internally using $.param(obj) to convert it for the POST, for example:

alt=thisAlt&src=thisSrc

or:

html=myEncodedHtml

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

Associative array is sortof a PHP thing. But you can have something similar via curly braces ({}). In fact, you're already using it in your $.ajax() call. Notice the '{}' parts. In this case, you can use json_decode() in the PHP server to decode the 'data' parameter:

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

`

Using json_decode() will get you something like:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM