2014-09-30 2 views
0

У меня есть эта простая функция JQuery:PHP петли через петлю Jquery

$(document).ready(function() { 
    var books = {}; 
    books.id = '1'; 
    books.author = 'Bob'; 

    $.post('/index.php', 
    { 
     books: books 
    }, 
    function(data, textStatus) 
    { 
     alert(data); 
    }); 
}); 

И это index PHP скрипт:

<?php 

    foreach($_POST['books'] AS $key) { 
     echo ''.$key['id'].' is written by '.$key['author'].''; 
    } 

?> 

Я хочу проходным массив JQuery и отображение идентификатора и автора каждый ключ в массиве. Я не знаю, как правильно обращаться к значениям в массиве. Кажется, я делаю это неправильно.

+1

вы пропусканием единственный объект в 'books', а не массив. вы также должны использовать 'json_decode' в php для анализа данных в php-объекте – asiviero

+1

' var books = [{id: 1, author: 'Bob'}, {id: 2, author: 'Bill'}] ' – adeneo

ответ

2

Вы не поняли разницу между {} и [] в JavaScript:

  1. {} является объектом
  2. [] является массивом

В вашем случае вы должны пройти array книги objects чтобы это работало в вашем php-скрипте. Пример:

var books = [ 
    { 
     id: 1, 
     name: "The Da Vinci Code", 
     author: "Dan Brown" 
    }, 
    { 
     id: 1, 
     name: "Gray Mountain: A Novel", 
     author: "John Grisham" 
    } 
] 

Чтобы добавить больше элементов массива после его инициализации, вы можете просто использовать push:

books.push({id: 3, name: "Avatar", author: "Lisa Fitzpatrick"}); 

Выведет:

1 is written by Dan Brown 
2 is written by John Grisham 
3 is written by Lisa Fitzpatrick 
+0

hey mate :) Как я могу нажать больше элементов в этот массив после того, как он был запущен? –

+0

Я обновил ответ на примере. – tftd

Смежные вопросы