2015-02-26 2 views
0

Я новичок в PHP и Ajax, поэтому, пожалуйста, несите меня. Я обыскал и нашел ответы, но все еще испытываю проблемы. У меня есть массив входных значений флажков. Если пользователь проверяет элемент, он добавляется в список массивов. Примером может служить:Массив Ajax возвращает только 1 значение?

listOfPrograms = [chrome, firefox, sqlworkbench] 

Я хочу отправить этот список массивов скрипту PHP на моем сервере. Мой текущий сценарий Ajax выглядит следующим образом:

function ajaxPostToPhp(listOfPorgrams) 
{ 
    $.ajax 
    ({ 
     url: 'script.php', 
     type: 'post', 
     data: ("listOfPrograms" : listOfPrograms), // I believe this is where my issues lies as I do not know exactly that this is doing. I have read the PHP documentation. I tried converting to JSON and kept getting a 500 error. 
     success: function(data) 
     { 
     console.log(data); 
     } 
    }); 
} 

Мой PHP скрипт как folllows:

$myArray = $_Request['listOfPrograms']; 
echo $myArray; 

Это возвращает только один элемент из массива. Я попытался установить myArray = [], но я получил неопределенный индекс.

Благодарим за помощь! Извините за такой вопрос.

ответ

0

Вы принимаете array как post параметр, но они могут быть только strings. Сначала необходимо преобразовать массив в строку JSON. Легко функция для этой цели является JSON.stringify()

var listOfPrograms = ["chrome", "firefox", "sqlworkbench"] 
// I guess you need strings here 

function ajaxPostToPhp(listOfPorgrams) { 
    $.ajax ({ 
     url: 'script.php', 
     type: 'post', 
     // Convert listOfPrograms to a string first 
     data: ("listOfPrograms" : JSON.stringify(listOfPrograms)), 
     success: function(data) { 
     console.log(data); 
     } 
    }); 
} 
+0

Кроме того, в файле PHP, вы должны использовать 'эхо json_encode ($ туАггау);' – dan08

+0

Отлично! Я пробовал это, и он работает. Два вопроса: (1) что такое «listOfPrograms»: JSON.stringify (listOfPrograms) на самом деле? Он преобразует массив в формат JSON ... тогда что? (2) Почему listOfPrograms должен быть в кавычках? Кроме того, он возвращает «[\" chrome \ ", \" firefox \ "]" не как отдельные элементы, а как символы. Например, myArray [2] = "c". Я хотел бы иметь возможность вытащить каждый элемент «хром» и «firefox», чтобы сделать некоторые манипуляции. – BearForceOne

+0

(1) Что вы имеете в виду? Он просто преобразует массив в строку JSON. (2) являются переменными 'chrome',' firefox' или вы хотите передать текст? Если вы хотите передать текст, вам нужны '' 'quotes. (3)' Я хотел бы иметь возможность вытаскивать каждый элемент '- В php? – ByteHamster

0

JQuery любезно превратить массив значений в Ajax пост data в массив для вас. проблема в том, что в php вы не можете просто эхо-массива. как указано комментатор, файл PHP должен выглядеть

$myArray = $_Request['listOfPrograms']; 
echo json_encode($myArray); 

также следует рассмотреть возможность использования $_POST над $_REQUEST

+0

Я попробовал это, и он только вернул один элемент массива. Благодарю вас за предложения. – BearForceOne

1

Вам необходимо исправить несколько вещей:

1- Javascript массив:

var listOfPrograms = ['chrome', 'firefox', 'sqlworkbench']; 

2- Ajax данных:

function ajaxPostToPhp(listOfPrograms) 
{ 
    myListData = {}; 
    myListData['Programs'] = listOfPrograms; 
    $.ajax({ 
    url: 'script.php', 
    type: 'post', 
    data: myListData, 
    success: function(data) 
    { 
    console.log(data); 
    } 
}); 
} 

3- Php Код:

$myArray = $_POST['Programs']; 
var_dump($myArray); 
+0

var_dump ($ myArray) ??? Ты уверен? – dan08

+0

@ dan08 Как раз для целей тестирования, я предполагаю, что OP знаком с языком php .... – Hackerman

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