#php #jquery #ajax #post
#php #jquery #ajax #Публикация
Вопрос:
jQuery(document).ready(function(){
// Set the data text
var dataText = "
{
name: 'John',
time: '2pm'
}";
alert(dataText);
// Create the AJAX request
$.ajax({
type: "POST", // Using the POST method
url: "/ajax/analytics/push", // The file to call
data: dataText, // Our data to pass
success: function() { // What to do on success
alert("Data Loaded: " dataText);
}
});
});
</script>
привет, я все еще изучаю ajax. как мы можем отправить массив из $ _POST?
1.im пытаюсь сделать что-то вроде
var dataText['name'] = 'Jhon';
var dataText['time] = '2pm';
затем каким-то образом превращает его в
$_POST['name'] = 'Jhon';
$_POST['time'] = '2pm';
затем отправьте его по URL..
2.is есть способ это отладить ? что я сейчас делаю, так это пишу
# somehow doesnt work becouse its not auto refresh when the ajax sends a post
var_dump($_POST);
# ok heres how i debug it right now.
ob_start();
// write content
$content = $_POST;
ob_end_clean();
file_put_contents('CACHE',$content);
в файле, я надеюсь, есть лучшее решение для этого..
Спасибо, что заглянули. Адам Рамадан
Ответ №1:
Я не совсем уверен, что вы делаете. Похоже, вы создаете JSON вручную (и делаете это неправильно), а затем передаете это (в форме строки, сериализованной в формате JSON) в свой файл. Затем вы, похоже, ожидаете, что он будет проанализирован PHP автоматически.
Было бы лучше отправить его в виде пар ключ-значение. Вы можете позволить jQuery сделать это за вас, если вы передаете объект. Это не будет сильно отличаться от вашего существующего кода:
var dataText =
{
name: 'John',
time: '2pm'
};
Обратите внимание, что я удалил двойные кавычки. Это в первую очередь потому, что незаконно иметь строку JS, охватывающую более одной строки, без экранирования разрывов строк. Это также потому, что вы хотите, чтобы объект передавался в ваш $.ajax
вызов.
Они должны быть доступны как $_POST['name']
и $_POST['time']
сейчас.
Комментарии:
1. он возвращает объект. а, понятно. итак, jquery может это сделать, передавая массивы в posts. мне было интересно об этом. как насчет его отладки? я имею в виду, как вы можете увидеть, что получено на странице php?
2. @Adam Это не возвращает объект — оно принимает объект в качестве параметра. Вы должны быть в состоянии отладить его с помощью чего-то вроде
file_put_contents('CACHE', var_export($_POST, true))
. Обратите внимание, что вам придется отключить буферизацию вывода, чтобы это сработало.3. работает!. в любом случае возвращаемым является массив array ( ‘name’ => ‘John’, ‘time’ => ‘2pm’, ) . спасибо!
Ответ №2:
file_put_contents('CACHE',serialize($content));
или
foreach($_POST as $k => $v) $content .= $k .'='.$v;
Ответ №3:
jQuery(document).ready(function(){
// Set the data text
var dataText =
{
name: 'John',
time: '2pm'
};
alert(dataText);
// Create the AJAX request
$.ajax({
type: "POST", // Using the POST method
url: "/ajax/analytics/push", // The file to call
data: dataText, // Our data to pass
success: function() { // What to do on success
alert("Data Loaded: " dataText);
}
});
});
# ok heres how i debug it right now.
ob_start();
# somehow doesnt work becouse its not auto refresh when the ajax sends a post
var_dump($_POST);
$content = ob_get_contents();
ob_end_clean();
file_put_contents('CACHE',$content);