#javascript #php #ajax
#javascript #php #ajax
Вопрос:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example Ajax PHP Form</title>
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script>
</head>
<body>
<form id="my_form_id">
Your Email Address: <input type="text" id="email" /><br>
<input type="button" id="ddd">
</form>
<script>
$(document).ready(function(){
$('#ddd').click(function(e){
//Stop the form from submitting itself to the server.
e.preventDefault();
var email = $('#email').val();
console.log(email);
$.ajax({
type: 'post',
url: 'http://localhost/script.php',
data: {email: email},
success: function(data){
alert(data);
}
});
});
});
</script>
</body>
</html>
Выше приведен код из моего index.php досье. Моя цель — передать адрес электронной почты с этой страницы php на другую страницу под названием script.php . Мой script.php код — это:
<?php
session_start();
$emailAddress = '';
if(isset($_POST['ddd'])){
$emailAddress = $_POST['email'];
echo "hi";
}
echo 'Received email was: ' .$emailAddress;
?>
Когда я запускаю свой index.php код он отображает оповещение с адресом электронной почты, который успешно передается с помощью функции AJAX. Однако, когда я обновляю свой script.php страница на ней не отображается адрес электронной почты. Я пытаюсь отобразить адрес электронной почты на script.php страницу, чтобы я мог вставить ее в инструкцию sql. Буду признателен за любую информацию о том, что я делаю неправильно.
Комментарии:
1. Вы должны иметь возможность получить доступ к адресу электронной почты в вашем PHP, активированном Ajax
$_POST['email']
. Однако,$_POST['ddd']
не будет установлено.2. Вы не передаете
ddd
, вы передаете только переменную с именем email ->data: {email: email},
3. Измените кнопку на
type='submit'
и измените$('#ddd').click
на$('#my_form_id').submit
. Вы не запрещаете отправку по умолчанию, вы делаете это по нажатию кнопки, поэтому страница перезагружается. Лично я просто не стал бы использовать форму. Мне не нравится, что они делают на мобильных устройствах, когда кнопка ввода переходит на кнопку вкладки. Кроме того, вам нужно протестировать$_POST['email']
вместо$_POST['ddd']
, как указано в @GrumpyCrouton .4. @StackSlave я изменил кнопку на
type='submit'
и$('#ddd').click
на$('#my_form_id').submit
. Однако результат по-прежнему не отображается на script.php страница. Есть ли что-то еще, что я все еще делаю неправильно?5. Вы должны просто использовать
url:'script.php'
… но проблема не в этом. Просто потому, что у вас ранее был результат AJAX, отображаемый на странице, он не остается там автоматически (пока у клиента есть подключение к Интернету) при перезагрузке страницы. JavaScript запускается заново при перезагрузке страницы. В этом случае вам нужно где-то хранить информацию. ИспользуйтеlocalStorge
или базу данных.
Ответ №1:
Изменение типа вашей кнопки на submit
не помогает в ajax. Все, что вам нужно, это их идентификаторы.
А также вам не нужен ajax для вашей ситуации. Вам просто нужно это window.location=
, чтобы перенаправить данные на ваш script.php
Это будет ваш index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example Ajax PHP Form</title>
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script>
</head>
<body>
<form id="my_form_id">
Your Email Address: <input type="text" id="email" /><br>
<input type="button" id="ddd">
</form>
<script>
$(document).ready(function()
{
$('#ddd').click(function()
{
var email = $('#email').val();
window.location="script.php?email=" email;
});
});
</script>
</body>
</html>
И тогда это будет вашим script.php . Я удалил ваше условие if, потому что оно не позволяет отображать данные вашей электронной почты. СООБЩЕНИЕ будет изменено на ЗАПРОС для получения данных из URL.
<?php
session_start();
$emailAddress = $_REQUEST['email'];
echo 'Received email was: ' .$emailAddress;
?>
Комментарии:
1. @prince спасибо за вашу помощь. Я попытался реализовать предложенные вами изменения, однако он по-прежнему не отображает мою электронную почту на script.php страница. Есть ли что-нибудь еще, что я мог делать неправильно?
2. Я отредактировал и написал весь ваш index.php файл и script.php досье. Надеюсь, это сработает.
3. @prince это все еще не работает. Есть ли что-нибудь еще, что, по вашему мнению, идет не так?
4. Я пытаюсь передать переменную email, чтобы она отображалась на script.php страница. Моя цель — вставить эту переменную email в sql-запрос на script.php страница.
5. Хорошо, потому что у вас есть код предупреждения в вашем ajax. Пожалуйста, нажмите на ссылку на изображение, которую я опубликовал, и скажите мне, хотите ли вы этого или нет. Спасибо.
Ответ №2:
Если вам нужен только 1 php-файл, сделайте это. Пожалуйста, ознакомьтесь с изменениями. Изменение типа вашей кнопки на submit
является обязательным, а также method=POST
в вашей форме. Нет необходимости id
, просто name
.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example Ajax PHP Form</title>
</head>
<body>
<form method="POST">
Your Email Address: <input type="text" name="email" /><br>
<input type="submit" name="ddd">
</form>
</body>
</html>
<?php
session_start();
if (isset($_POST['ddd']))
{
$emailAddress = $_POST['email'];
echo 'Received email was: ' .$emailAddress;
}
?>
Ответ №3:
Пожалуйста, измените ввод на button type=»submit», затем в javascript, пожалуйста, проверьте .нажмите, чтобы отправить
Ответ №4:
ваш вопрос по-прежнему не ясен, скрипт, который вы предоставляете, работает отлично..
но во второй части вашего вопроса :
Когда я запускаю свой index.php код он отображает оповещение с адресом электронной почты, который успешно передается с помощью функции AJAX. Однако, когда я обновляю свой script.php страница на ней не отображается адрес электронной почты. Я пытаюсь отобразить адрес электронной почты на script.php страницу, чтобы я мог вставить ее в инструкцию sql. Буду признателен за любую информацию о том, что я делаю неправильно.
это верно после того, как успех ajax предупредит данные. но ваш вопрос после обновления script.php в нем должен отображаться адрес электронной почты…
после обновления script.php теперь будет отображаться любой сохраненный адрес электронной почты .. перед обновлением script.php вы должны сохранить электронную почту в базе данных или в хранилище браузера.
Третьи части
поэтому я мог бы вставить ее в оператор sql
почему вы хотите отобразить адрес электронной почты и после этого хотите вставить в базу данных .. вы можете напрямую вставить в базу данных после успеха ajax.. пример не используйте его.
$sql = "INSERT INTO table ".
"(email) "."VALUES ".
"('$email')";
mysql_select_db('SOMEDB');
$res = mysql_query( $sql, $conn );
if(! $res ) {
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfullyn";
mysql_close($conn);