2015-01-04 2 views
-2

Вот код, я использую, и он не работает, когда я пытаюсь echo $_POST['count']; на page.phpПередача данных с помощью AJAX

<input type="submit" value="go" id="more"> 
<script> 
$(function(){ 
    $('#more').click(function(event) { 
    event.preventDefault(); 

    $.ajax({ 
     type: "POST", 
     url: "page.php", 
     data: {"count":3} //saving number 3 
     }); 

    }); 
}); 
</script> 

В page.php.

<?php echo $_POST['count'];?> //doesn't work. 
+2

Определить 'не работает'. Какие ошибки вы получаете? Проверьте консоль JavaScript. Вероятно, вам нужен обработчик 'success', чтобы что-то сделать с результатами вызова AJAX - он не будет волшебным образом отображаться где-то на странице. – ceejayoz

+1

Сколько отладки вы выполняли? Вы отлаживали свой вызов Ajax с помощью Firebug или сопоставимого инструмента, чтобы узнать, отправляет ли ваш POST _is_ данные в сценарий? –

+0

'данные: {count: } ' – lolbas

ответ

1

$number не определено в вашем JavaScript. Когда это происходит, большинство, если не все браузеры, не публикуют данные. Он не определен, поскольку переменная не существует в области JavaScript. Я думаю, вы хотели бы повторить значение PHP.

Попробуйте

<?php session_start(); 
$_SESSION['n'] = 3; 
$number = $_SESSION['n'];?> 

<input type="submit" value="go" id="more"> 
<script> 
$(function(){ 
    $('#more').click(function(event) { 
    event.preventDefault(); 

    $.ajax({ 
     type: "POST", 
     url: "page.php", 
     data: {"count":<?php echo($number);?>} 
     }); 

    }); 
}); 
</script> 
+0

' $ number' присваивается переменной сеанса '$ _SESSION ['n']' и пытается получить к ней доступ через '$ _POST ['count']', поэтому я не вижу, как '$ number' появится в page.php. Поэтому дополнительная проблема, которую может иметь OP, заключается в том, что 'session_start();' не находится в page.php –

+0

@ Fred-ii- Я так не думаю. '$ _SESSION ['n'] задается константа« 3 ». Он пытается отправить это значение обратно на сервер через ajax. Он мог бы избавиться от строк сеанса кода и получить точные результаты. – user1032531

+0

Да, я несколько раз искал все, поэтому мне нужно было все проверить самостоятельно, чтобы быть уверенным. Я не говорю, что ваш ответ неверен ;-) –

0

$ .ajax посылает запрос от клиента к удаленному серверу, а затем получает ответ. Скрипт page.php должен отображать некоторый тип текста ответа, который затем можно использовать в пользовательском интерфейсе на стороне клиента. Я думаю, вы, возможно, пытаетесь отправить форму. Какой будет выглядеть следующим образом:

<?php 
session_start(); 
if(isset($_SESSION['n'])){ $number = $_SESSION['n']; } 
else {$number = "<DEFAULT VALUE>";} 
?> 

<body> 

<form name="formname" action="<?php echo "page.php?number=$number ?>" method="post"> 
<input type="submit" value="go" id="more"> 
</form> 

</body> 

Тогда на page.php, вы можете получить номер переменной, как это: $ число = $ _POST [ 'номер'];

* Примечание. Вы можете передать переменные удаленному скрипту с использованием $ .ajax(). Этот удаленный сценарий будет принимать эти переменные и выдавать ответ. Вот некоторая документация по использованию ajax с JQuery Click here

0

Чтобы повторить переменную сеанса на той же странице, вы можете использовать именованный скрытый ввод и использовать значение из переменной $number; то есть: value="<?php echo $number;?>", а затем с помощью <div> в качестве элемента для отображения внутри.

page.php будет содержать:

<?php 
echo $_POST['count']; 

Это код, который будет загружен в вашем браузере, и с помощью JQuery:

<?php 
session_start(); 
?> 

<?php 
$_SESSION['n'] = 3; 
$number = $_SESSION['n']; 
?> 

<html> 
<head> 
<script src="//code.jquery.com/jquery-latest.js"></script> 
<script> 
    $(document).ready(function() { 
     $('#submit-button').click(function (e){ 
     e.preventDefault(); 

     $.ajax({ 
     type: 'POST', 
     url: 'page.php', 
     data: $("#theform").serialize(), 
success: function(d){ 
    $(".result").html(d); 
} 
    }); 
    }); 
});//end document ready 
</script> 
</head> 
<body> 

<div id="some_id"> 
<form id="theform"> 
<div> 
    <input type="hidden" id="count" name="count" value="<?php echo $number;?>" /> 
</div> 

<div> 
    <button id="submit-button">Submit</button> 
</div> 
</form> 
</div> 
    <div class="result"></div> 
</body> 
</html> 
0

Я думаю, что легче создать FormData объект и добавить в него данные или некоторые частные данные. После этого отправьте этот объект с объектом xmlhttp на сервер.

var formdata = new FormData(); 
formdata.append("count", 3); 
var xmlhttp; 
.................. 
xmlhttp.send(formdata); 

$count = $_POST['count']; 
Смежные вопросы