2016-04-29 2 views
0

Так что я искал вокруг немного в надежде найти решение моей проблемы, но не повезло. Я в основном пытаюсь передать данные в функцию ajax, но когда он передает его в мой php-файл, он возвращает только пустой массив (да, есть несколько тем, которые не могли найти, чтобы соответствовать моим потребностям), здесь является консольным выходом: Array()Пустой массив AJAX

Его нечетность, потому что как раз перед функцией ajax я регистрирую данные, и он печатает каждый раздел без проблем. URL-адрес проводки является точным, отлично работает прямо из моей формы. Я попытался использовать ответ вместо данных, переданных через функцию, но им не повезло. Спасибо заранее!

Вот JS файл

$(document).ready(function() { 
    $('form.ajax').on('submit', function() { 

    var that = $(this), 
     url = that.attr('action'), 
     type = that.attr('method'), 
     data = []; 

    that.find('[name]').each(function(index, value) { 
     var that = $(this), 
     name = that.attr('name'), 
     value = that.val(); 

     data[name] = value; 
    }); 
    console.log(data); /////THIS LINE HERE ACTUALLY PRINTS DATA 
    $.ajax({ 
     url: url, 
     type: type, 
     data: data, 
     success: function(data) { 
     console.log(data); 
     } 
    }); 

    return false; 

    }); 
}); 

А вот мой PHP

<?php //removed the issets and other checkers for ease of readability 

print_r($_POST); 

?> 

UPDATE: Я пытался добавить метод: "POST" для моей функции AJAX и она по-прежнему кажется, печать пустых массивов ... Может быть, я должен преобразовать все, чтобы ПОЛУЧИТЬ?

+2

'метод:« POST »' отсутствует в ajax – Thamilan

+0

Ahh. Пробовал это, и он все еще печатает пустой массив. –

+0

У меня есть теория, но ее нужно протестировать. В верхней части вашего PHP-файла, когда вы помещаете var_dump (file_get_contents ("php: // input")), что такое вывод? – aaronofleonard

ответ

1

jQueryajax() использует GET как метод по умолчанию. Вы должны указать method: POST для POST запросов.

метод (по умолчанию: 'GET')

$.ajax({ 
    url: url, 
    method: "POST", 
    type: type, 
    data: data, 
    success: function(data) { 
     console.log(data); 
    } 
}); 

Или вы можете также использовать post().

+0

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

0

EUREKA !!! Вау, ошибка была намного проще, чем я думал, разобрался соло! Спасибо всем за советы! Наконец получил его

$('form.ajax').on('submit', function() { 

var that = $(this), 
    url = that.attr('action'), 
    type = that.attr('method'), 
    data = {}; // THIS NEEDS TO BE CHANGED TO BRACKETS!! 
Смежные вопросы