2015-08-23 2 views
-1

У меня есть базовая форма HTML с одним текстовым полем ввода вместе с кнопкой отправки. Теперь я хочу использовать JavaScript для отображения содержимого, введенного пользователем в текстовом поле после отправки формы.

Вот код моей формы:

<form method = "POST"> 
    <input type = "text" name = "tweet1" /> 
    <br> 
    <input type = "submit" onclick = "postResul()" /> 
</form> 

При нажатии на кнопку отправки, функция postResul() называется:

<script> 

function postResul() 
{ 
    var htmlString="<?php echo $_POST['tweet1']; ?>"; 
    alert(htmlString); 
} 

</script> 

Теперь обе эти фрагменты кода, которые хранятся в виде PHP файла. Однако при отправке формы данные, введенные в поле формы ввода, не отображаются. Я показываю переменную $_POST['tweet1'], чтобы отобразить запись, представленную пользователем.

Что здесь, кажется, неправильно? Я использую переменную $_POST в PHP неправильно?

+8

Вы должны понимать, что PHP и JS очень разные языки, PHP работает на стороне сервера, и JS на стороне клиента. Когда вы вызываете функцию postResul() ', вы пытаетесь повторить переменную' $ _POST', которая уже обработана на стороне сервера, что не является вашим намерением. Вы можете (1) просто предупредить входное значение пользователя или (2) сохранить вход пользователя в БД, для которого вы получаете доступ к их входу с помощью вызова AJAX. – Terry

+0

Возможный дубликат [Вызов функции php из javascript] (http: // stackoverflow.com/questions/7165395/call-php-function-from-javascript) –

ответ

2

Если вы хотите отобразить значение на вход перед отправкой его на сервер:

document.querySelector("form").addEventListener("submit", function() 
 
{ 
 
    var value = this.querySelector("input[name='tweet1']").value; 
 
    alert(value); 
 
    return false; //disable sending the data to the server 
 
}, false);
<form id="myForm" method="post" action="index.php"> 
 
     <input type="text" name="tweet1" /> 
 
     <br> 
 
     <input type="submit" /> 
 
    </form>

Если вы хотите отобразить значение на вход после отправки его на сервер:

<form method="post" action="index.php"> 
    <input type="text" name="tweet1" /> 
    <br> 
    <input type="submit" /> 
</form> 
<?php echo htmlspecialchars($_POST["tweet1"]); ?> 

Это разные вещи. Вы можете использовать $_POST только после того, как вы отправили некоторые данные на сервер. Когда вы открываете yoursite.com/index.php в своем браузере, вы делаете запрос HTTP GET.В этом случае $_POST будет пустым массивом, так как это запрос GET, на сервер не отправляются данные. Когда вы отправляете форму, вы делаете запрос HTTP POST. Ваш PHP может получить доступ только к тем данным, которые вы отправили на сервер. С Javascript вы работаете на компьютере посетителя, а не на сервере. Единственный способ отправить данные на сервер, не обновляя страницу, если вы используете AJAX, и выполните новый запрос HTTP POST, который будет работать в «фоновом режиме». Но вам это не нужно, если вы просто хотите отобразить значение ввода, и вы не хотите сохранять его на своем сервере. Это можно сделать с помощью Javascript и без PHP.

код вы вывесили выше, будет работать так:

  1. Вы делаете запрос HTTP GET на yoursite.com/index.php.
  2. Данные на сервере не отправлены, $_POST будет пустым.
  3. var htmlString="<?php echo $_POST['tweet1']; ?>"; В этой строке вы пытаетесь повторить несуществующий элемент $_POST, вы можете увидеть сообщение об ошибке, если display_errors не отключен.
  4. Вы нажимаете кнопку отправки.
  5. Он имеет атрибут onclick, postResul (функция Javascript). При открытии shource данной страницы, вы увидите это:

    function postResul() 
    { 
        var htmlString=""; 
        alert(htmlString); 
    } 
    
  6. После пустого всплывающего окна отображаются, и нажмите кнопку OK, браузер отправить данные на сервер, и вы будете в состоянии Асесс значение ввода через $_POST.

  7. При повторном нажатии на кнопку отправки, вы увидите занесена значение (а не фактическое значение на вход в), потому что если вы открываете исходный код, вы увидите следующее:

    function postResul() 
    { 
        var htmlString="entered data"; 
        alert(htmlString); 
    } 
    

Но это не так, как вы хотите, поэтому см. Приведенные выше примеры в зависимости от того, что вы хотите (сохранить данные или просто отобразить их в браузере).

0

Вы должны сделать другой файл. Изменение кода:

<form method="POST" action="another.php" > 
    <input type = "text" name = "tweet1" /> 
    <br> 
    <input type = "submit" /> 
</form> 

В файле another.php вы можете показать переменную затем:

<?php echo htmlspecialchars($_POST['tweet1'], ENT_QUOTES, 'UTF-8'); ?> 
1

Это должно работать:

function postResul() 
{ 
    var htmlString=document.getElementsByName("tweet1")[0].value; 
    alert(htmlString); 
} 

Но вы должны действительно прочитать больше о том, как работают клиентские и серверные языки.

1

Вы не можете использовать $_POST['tweet1'], чтобы получить значение при вызове функции Javascript. В основном клиентская сторона и серверная сторона совершенно разные.

Вы можете получить результат, используя Javascript, как:

function postResul() 
{ 
    var htmlString= document.getElementsByName("tweet1")[0].value; 
    alert(htmlString); 
} 

В HTML:

<form method = "POST"> 
    <input type = "text" name = "tweet1"/> 
    <br> 
    <input type = "submit" onclick = "postResul()" /> 

</form> 

Примечание: данная функция работает в стороне клиента, а не на стороне сервера.

$_POST можно использовать для получения значений представленной формы на странице php.

Cheers.

+0

'$ _POST можно использовать для получения значений представленной формы на php-странице.« Я не совсем понял, что это значит. Мой исходный код был внутри самой php-страницы. Можете ли вы подробнее рассказать об этом? –

+0

@ManasChaturvedi: Javascript - это то, что работает на стороне клиента. И функция onclick, которую вы написали, предназначена для работы только на стороне клиента (браузер). Когда вы отправляете форму и хотите получить значения на php-странице, вы делаете это через '$ _POST ['tweet1']'. Попробуйте повторить '$ _POST ['tweet1'];' поверх вашей php-страницы, и вы узнаете. –

0

Вы должны использовать форму иначе

<form method="POST"> 
    <input type = "text" name = "tweet1" /> 
    <br> 
    <input type = "submit" /> 
</form> 

test.php файл

<?php 
return json_encode([1, 2, 3]); 

JS

$('form').on('submit', function() { 
    $.post('test.php', {}).done(function(response) { 
     alert(response); 
    }) 
}) 

что-то вроде этого. Надеюсь, это полезно.

0

если вы используете библиотеку Jquery вы можете сделать это

<form method="POST"> 
    <input type = "text" name = "tweet1" class="tweet" /> 
    <br> 
    <input type = "submit" class="submit" /> 
</form> 

$('.submit').click(function(e){ 
    alert($('.tweet').val()); 
    e.preventDefault(); 
}); 

jsfiddel рабочий пример http://jsfiddle.net/mdamia/j3w4af2w/2/

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