2013-10-26 3 views
0

Я знаю, что существует немало вопросов, подобных моим, но я пытаюсь передать переменную javascript в php-скрипт с использованием AJAX. Может ли кто-нибудь указать, что я делаю неправильно? Кажется, это не понятно. Мой Javascript на исходной странице:отправка переменной javascript в скрипт php через сообщение без формы

var myvariable = document.documentElement.innerHTML; 
// send variable to server via ajax here 
$.ajax({ 
    url: 'myphp.php', 
    data: { myvariable : myvariable }, 
    type: 'POST', 
    success: function(result) { 
    alert("success!"); 
     } 
}); 

, а затем получить на «» myphp.php странице:

<?php 
if(isset($_POST['myvariable'])) 
{ 
$myvariable = $_POST['myvariable']; 
} 
?> 

Я пытаюсь сделать это без использования отправки формы - я просто хочу его для отправки переменной через ajax при загрузке страницы. Попытка повторить или распечатать переменную $ myvariable приводит к пустой странице. Также попытка использовать эту переменную в вызове API дает мне предупреждение о том, что поле пустое.

+0

Вы получаете ошибки javascript? Вы уверены, что myvariable не является нулевым? –

+0

var myvariable = document.documentElement.innerHTML; ? – underscore

+1

success: function() устарел, используйте .done (function(), а также его document.getElementByID() или ByName() и т. Д. – xlordt

ответ

0

Я вижу, что вы хотите делать, но, к сожалению, его логика неуместна.

PHP загружается до Javascript, так как сервер анализирует его перед отправкой в ​​ваш браузер. Таким образом, $myvariable не имеет значения, пока он не получит его из запроса AJAX, который не появляется, пока страница не загрузится. Поскольку новая версия страницы не запрашивается повторно, вы не видите ничего нового.

Вам необходим способ передачи переменной из файла PHP обратно в браузер динамически. Это делается с использованием JSON или чего-то подобного для отправки переменных обратно в Javascript непосредственно для разбора в браузере.

После того, как у вас есть библиотека JSON на вашем сервере, вы установите dataType: json в своем Javascript, и на вашем PHP вы вызываете json_encode($responseData);.

Ах да, и как другие сказали:

var myvariable = document.getElementByID('idforelement'); 
+1

Ну, это мой ответ ... Независимо от того, как я изменяю javascript, php всегда загружает сначала и просматривает мои переменная как пустая. Не тот ответ, на который я надеялся, но правильный ответ, я думаю. – cloudy

+0

, так что если я делаю $ myvariable = json_encode ($ responseData), то на php-странице, а затем перейдите к использованию $ myvariable в php, это будет null Извините за немые вопросы и спасибо за ваше время. – cloudy

0

Прочитайте это сделать Ajax вызов: jQuery Ajax

И использовать document.getElementByID('element_id').innerHTML ИЛИ document.getElementByName(' ').innerHTML получить значение innerHTML элемента.

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