PHP Ассоциативный массив решений для работы с jQuery AJAX - PullRequest
3 голосов
/ 19 июня 2011

У меня есть JavaScript, как показано ниже;

<script type="text/javascript">
$(document).ready( function() {
var i = 1;
$.ajax({
  type: 'POST',
  url: 'ajax.php',
  data: 'id=' + i,
  dataType: 'json',
  cache: false,
  success: function(result) {
    $('.content').each(function(index){
      if((result[index])){
        $(this).css({ 'background-image':'url(images/' + result[index] + '.jpg)' });
      }else{
        $(this).css({ 'background-image':'url()' });
      }
    });
    $('.title').each(function(index){
      if((result[index])){
        $(this).html(result[index]);
      }else{
        $(this).html("&nbsp;");
      }
    });
  },
  });
});
</script>

Который, с помощью моего php-файла;

<?php
$id = $_POST["id"];
$array = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
$quantity = 6;
$offset = ($id-1)*$quantity;
$array2 = array_slice($array,$offset,$quantity);
echo json_encode($array2);
?>

меняет фоновое изображение моей таблицы;

<table style="width: 100%; border: solid 1px #666600; min-width: 800px" cellpadding="0" cellspacing="0">
<tr>
<td id="prev">prev</td>
<td class="content" >&nbsp;</td>
<td class="content" >&nbsp;</td>
<td class="content" >&nbsp;</td>
<td class="content" >&nbsp;</td>
<td class="content" >&nbsp;</td>
<td class="content" >&nbsp;</td>
<td id="next">next</td>
</tr>
<tr>
<td>&nbsp;</td>
<td class="title" >&nbsp;</td>
<td class="title" >&nbsp;</td>
<td class="title" >&nbsp;</td>
<td class="title" >&nbsp;</td>
<td class="title" >&nbsp;</td>
<td class="title" >&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

И все хорошо работает.

Но я хочу отобразить некоторые данные, связанные с числами в массиве, скажем, с именами от name1 до name20 относительно элементов массива. На моей странице ячейки таблицы, имеющие class="title", заполняются элементами массива (здесь имена изображений). Но я хочу, чтобы class="title" был заполнен именами 1-20, которые должны доставляться вместе с элементами массива, такими как ассоциативный массив. Я думаю, что ассоциативный массив будет лучшим вариантом.

Как я могу сделать это, используя Javascript и jQuery ??

Примечание: - Не беспокойтесь о PHP. Если кто-то предложит определенный формат для отображения данных в PHP, я могу разобрать его. Я новичок ..

Заранее спасибо ...

1 Ответ

6 голосов
/ 20 июня 2011

Ассоциативный массив станет объектом javascript с json_encode

Обычный массив как массив (1,2,3) == json_encode ==> [1,2,3]

Массив в виде ассоциативного массива ('name' => 1, 'name2' => 2) == json_encode ==> {name: 1, name2: 2}

Таким образом, результат [index] больше не будет работать.

Лучший способ - отправить объект с двумя массивами:

PHP:

array( 'classes' => array('name1','name2') , 'ids' => array(1,2));

В Javascript вы можете получить к нему доступ так:

result.classes[index]
result.ids[index] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...