2013-05-05 3 views
-1

Это Javascript я использую сейчасполучение Аякса передать строковую переменную из JavaScript в PHP

<script> 
    $(document).ready(function() { 
     var namer = sessionStorage.getItem("namer"); 
     $.ajax({ 
      type: "POST", 
      url: "Antibiotics2.php", 
      data: { 'name': namer } 
     }).done(function(msg) { 
      alert("Data Saved: " + msg); 
     }); 
    }); 
</script> 

и это PHP:

<?php echo $_POST['name']; ?>    

Он выдает ошибку и говорит, что индекс 'name' не может быть найден.

+0

Это обновленный вопрос ... все еще есть проблемы. – user1518003

ответ

0

Ну, я реплицировал вашу настройку и каждый раз, когда я могу получить переменную, установленную в $ _POST. Я также избегал внесения изменений в имена, поскольку вы заявили, что сессия правильно фиксируется по аналогичному вопросу.

Я смог воспроизвести ошибку, установив переменную namer в undefined или попытавшись извлечь значение, которое не было.

Поскольку я смог отправить переменную namer до тех пор, пока она установлена, вам придется сделать пару вещей.

  1. Проверьте, установлена ​​ли переменная namer, возможно, клиентская и серверная. Это в javascript, который вы проверили бы, если переменная не определена или в php вы проверили бы, установлен ли $ _POST ['namer'].

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

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

стороне сервера проверки - PHP:

if(isset($_POST['namer'])){ 
    echo $_POST['namer']; 
}else{ 
    echo "session capture unsuccessful"; 
} 

стороне клиента проверка - Javascript:

var namer = sessionStorage.getItem("namer"); 

if (typeof namer === "undefined") 
    console.log("your session is not set"); 
} else{ 
    // you could place your ajax request here 
    // or you could set the namer variable to a default value 
} 

Пожалуйста, если это возможно разработать ваши веб-приложения локально, как это проще отлаживать и как окончательное отметить его может быть проще использовать console.log (yourError) для целей отладки, а не оповещения (yourError).

+0

Я выполнил ваше предложение, и переменная установлена ​​как на стороне клиента, так и на стороне сервера. Но он не будет отображаться на странице firefox. Я использовал firebug и посмотрел на вкладку сценария, и здесь печатается нужная строковая переменная. Так это проблема с моим браузером? Я не думаю, что это потому, что хром имеет ту же проблему. – user1518003

+0

Хорошо, поэтому теперь, когда вы подтвердили, что ваша переменная установлена, если вы хотите отобразить значение в определенном разделе вашего сайта, вы можете использовать $ («# nameOfDiv»). Append (msg); Это значение, возвращаемое с вашего запроса ajax, теперь можно добавить в любой раздел вашего сайта. – thirdOctet

+0

Я хочу использовать строку как часть инструкции SQL. Это возможно? – user1518003

1

Вы делаете почтовый звонок, поэтому вам нужно использовать $ _POST вместо $ _GET. Кроме того, используйте кавычки для строковых ключей

echo $_POST['namer']; 
1

Поскольку вы делаете пост запрос, вы должны будете использовать $_POST для извлечения данных, а также вы должны отправить данные в виде пар ключ/значение, например

<script> 
$(document).ready(function() { 
     var namer = sessionStorage.getItem("namer"); 
     $.ajax({ 
      type: 'post', 
      url: 'Antibiotics2.php', 
      data: {namer:namer} 
     }); 
}); 
</script> 

PHP

<?php echo $_POST['namer']; ?> 
2

вы не говоря PHP имя переменной вы отправляете:

$.ajax({ 
      type: 'post', 
      url: 'Antibiotics2.php', 
      data: { 'namer': namer } 
     }); 
}); 

И вы хотите $_POST на стороне PHP, с именем переменной цитируемого:

<?php echo $_POST['namer']; ?> 
0

Аякса код размещен в вопросе работает для меня. Но я использую Java и я вещь

<?php echo $_POST['namer']; ?>

является PHP эквивалент

<%= request.getParameter("namer") %> 

в JSP

Пожалуйста, откройте Firebug или хромовые разработчиков инструмента и искать целые параметры запроса является отправленный вашим запросом Ajax.

Надеюсь, это поможет.

+0

Я открыл firebug, а затем вкладку сценария. Запрос успешно отправляет строковую переменную в php. Но на реальной странице firefox это показывает, что переменная не определена. В соответствии с предложением ниже я тестировал сервер и клиентские стороны, чтобы узнать, была ли переменная установлена ​​на значение. Это было в обоих случаях, но все еще не появилось в браузере. Не уверен, куда идти отсюда. – user1518003

+0

, пожалуйста, проверьте вкладку «Net» в Firebug, когда отправляется запрос Ajax. Открыть Firebug -> Выбрать вкладку Net -> Выбрать опцию XHR , а затем отправить запрос ajax и проверить параметры POST. – Arghya

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