Неопределенный индекс в запросе Post

#php #jquery #ajax #undefined-index

#php #jquery #ajax #неопределенный-индекс

Вопрос:

Я понятия не имею, почему я получаю эту странную ошибку!

Уведомление PHP: неопределенный индекс: refId в /var/www/echo.php в строке 5

Я получаю вывод на консоль, но не могу повторить refId . Я сделал что-то не так здесь?

 <?php
    $rollUrl = 34;
    $refId = $_POST['refId'];
    echo $refId;
?>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
    $.ajax({
        url:'echo.php',
        type: 'POST',
        data: { 'refId': "<?php echo $rollUrl ?>" },
        success: function(response){
            console.log('Getting response');
        }
    }); 
</script>
 

Комментарии:

1. Если это все один файл, то на $_POST него ссылаются перед отправкой POST. Добавьте условное обозначение вокруг этого блока для проверки if (count($_POST) > 0)

Ответ №1:

Пожалуйста, ознакомьтесь с комментариями в коде ниже:

 <?php
$rollUrl = 34;

//Only try to process POST if there is something posted *and* refId exists
if (count($_POST) > 0 amp;amp; isset($_POST['refId'])) { 
  $refId = $_POST['refId'];
  echo $refId;
  //Exit after echoing out the refId so that the HTML below does not also get returned.
  exit();
}
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
    $.ajax({
        url:'echo.php',
        type: 'POST',
        data: { 'refId': "<?php echo $rollUrl ?>" },
        success: function(response) {
            //Updated log to show the actual response received.
            console.log('Getting response of "'   response   '"');
        }
    }); 
</script>
 

Это работает для меня, когда я тестировал без каких-либо ошибок и выполнения Ajax.

Комментарии:

1. Миллер ..! Я запустил тот же код, который вы предложили ..! Фактически скопировал, вставил его ..! Но не получает echo. 🙁

2. Если это было сделано до моей правки, попробуйте еще раз. У меня в системе был файл с именем diff. Если это было после, убедитесь, что вы находитесь в консоли, или измените его на оповещение.

3. да ..! я изменил имя файла..! это очень обидно. Получали ли вы значение echo??

4. «Не работает» — это единственное объяснение, которое «никогда не работает». Скрипт действительно «работает», как вы и просили, он возвращает отправленный refId. Если вы испытываете трудности с этим, тогда требуется более подробная информация. Кстати: восклицательные знаки редко нужны на SO, чтобы выразить свою точку зрения… никто не услышит, как ты кричишь в киберпространстве. 😉

5. Чувак ..! остынь ..! теперь все в порядке ..! Я все исправил. В любом случае, спасибо ..!

Ответ №2:

Это происходит потому, что ваша переменная не установлена. Использовать isset

 <?php

$rollUrl=34;
if(isset($_POST['refId'])) {
$refId=$_POST['refId'];
echo $refId;
}

?>
 

Обновить:
Вы должны назначить атрибут refId as a name любому полю ввода, чтобы восстановить ввод от пользователя.

 <input type="text" name="refId" />
 

Комментарии:

1. Нет, это не помогает ..! Это всего лишь один файл.

2. проверьте имя поля ввода и убедитесь, что вы установили его refId равным .

3. да …! у меня нет поля ввода. Это просто приведенный выше код.

4. Вы должны определить refId в качестве атрибута name любое поле, из которого вы можете получать входные данные от пользователя. смотрите мой обновленный ответ

5. Я не принимаю никаких пользовательских данных. Я хочу выполнить вызов ajax после определенной функции. Ввод не требуется. Предположим, что вы отправляете только значения пары ключей. Он должен работать r8?