Отправить массив из поля в JavaScript, а затем в PHP - PullRequest
0 голосов
/ 24 января 2011

Я застрял с созданной им функцией AJAX. Вот сделка, у меня есть форма, которую я отправляю в php через ajax. В моей форме у меня есть другая форма, которая загружает изображения и сохраняет URL в новом созданном массиве поля ввода. Моя проблема в том, что я не знаю, как отправить эти новые поля в php из ajax / jquery

вот часть кода

Загруженный файл работает отлично, и я получаю новое поле из каждого загруженного файла в мою существующую форму.

<input name="img[]" type="hidden" value="mynewfile1.jpg">
<input name="img[]" type="hidden" value="mynewfile2.jpg">
etc...

Я объявляю другие объекты формы вот так и затем отправляю их в мой php файл вот так

Объявление

var event_title = $('input[name=event_title]');
var event_tags = $('input[name=event_tags]');

// Это мой массив, который я тоже пытаюсь отправить на php, но как?

var event_img = $('input[name=img[]]');

Отправка Это делается обычным ajax через метод POST.

var data = 'event_title=' + event_title.val() etc...

Мой php

$event_title =  $_POST['event_title'];
$event_url =  $_POST['event_url'];
etc..

Здесь я получаю материал из ajax, а затем использую переменные, чтобы публиковать и делать другие вещи.

Я получаю массив изображений вот так

if ($_POST['event_img']) {

  $array=$_POST['event_img'];
  foreach ( $array as $value ) {

etc...

Я предполагаю, что проблема заключается в отправке из ajax, как мне получить поле массива, объявить его в javascript и отправить его в php и обработать его там?

Спасибо за любые мысли и помощь !!

Ответы [ 3 ]

1 голос
/ 24 января 2011

используйте json:
закодируйте ваш массив как json с помощью функции JSON.stringify, а на стороне сервера, я думаю, json_decode справится.

1 голос
/ 24 января 2011

Я бы использовал .serialize () , чтобы сериализовать всю форму и отправить ее с помощью ajax

var data = $('form').serialize();

, а затем, если вы отправите данные с помощью ajax, все текущие данные формыбудет доступен, как если бы вы на самом деле отправили форму.

0 голосов
/ 24 января 2011

Вы не можете использовать AJAX для асинхронной загрузки файлов через поля формы ввода файлов, что означает, что для того, чтобы ваши файлы были доступны для PHP через массив $ FILES , вам нужно фактически отправить форму (либо вручную, либо с помощью метода .submit () ).

Если вам нужно загрузить файлы с AJAX-запросами, вам необходимо использовать такие инструменты, как Uploadify (http://www.uploadify.com/) и т. Д. Или создать правильную систему загрузки на основе клиент-серверного потока (что не должно быть такой простой задачей).

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