Я пытаюсь создать приложение ReactJS, которое должно связываться с PHP.
Я мог бы использовать nodeJS, но я выбрал PHP, потому что я узнал его несколько лет назад и не хочу его забывать.
Итак, что должно произойти в моем приложении:
Когда пользователь отправляет кнопку отправки (которая также отображается в render()), вместо перенаправления на php файл приложение отправляет запрос ajax во внешний php файл. PHP файл должен получить входное значение.
но php показывает такие предупреждения в консоли, когда я удаляю if (isset()) из файла.
Примечание. Неопределенный индекс: поиск в C:\xampp\htdocs\ReactStudy\travelReduxApp\public\server\itemList.php в строке 13
Это мои коды
index.js
import ajaxRequest from './ajax';
console.log(store);
setTimeout(function(){
document.getElementById('AppName').classList.add('visible');
},300);
class App extends React.Component{
submitForm = (e)=>{
e.preventDefault();
//console.log(this.refs.search.value);
const value= this.refs.search.value;
ajaxRequest(e,value);
}
render(){
return(
<div>
<section id="Search">
<form id="Search" data-object="form" method="GET" onSubmit={this.submitForm}>
<input ref={'search'} placeholder="search country, attraction names" type="text" name="search"/>
<button type="submit">SEARCH</button>
</form>
</section>
<ItemList/>
</div>
)
}
}
ReactDOM.render(
<App/>,
document.getElementById('App')
)
ajax.js
export default function ajaxRequest(e,value){
let xhr = new XMLHttpRequest();
switch(e.type){
case 'submit':
xhr.open('get','//localhost:80/ReactStudy/travelReduxApp/public/server/search.php?'+value,true);
xhr.onreadystatechange = function(data){
switch(xhr.status){
case 200:
const text = xhr.responseText;
console.log(text);
}
}
}
xhr.send();
}
search.php
<?php
header('Access-Control-Allow-Origin:* ');
/*shows warning without isset*/
/*$form = $_GET["search"];
echo $form;*/
/*with isset shows not found*/
if(isset($_GET["search"])){
$form = $_GET["search"];
echo $form;
}else{
echo "not found";
}
?>
может ли кто-нибудь найти или научить меня, почему мой php не может найти входной тег с поиском значения атрибута имени?
тег ввода уже отображается в документе при вызове php. Что мне не хватает?
Я использую webpack, а bundle.js включен в нижней части тега.
отредактировал мой код. Я использую GET в своем коде, и я не знаю, почему я написал POST здесь. Итак, забудьте об этом. Я использую $ _GET в моем PHP-коде. Простите.
Единственное, что отправляет ваш Ajax, это this.refs.search.value - не имя "поиск"/не закодированное в кодировке/не кодирование нескольких частей. Действительно, вы, кажется, изобрели свою собственную систему кодирования.
Пытаться:
xhr.open('get','//localhost:80/ReactStudy/travelReduxApp/public/server/search.php?search=' + value,true);
в Ajax.js
<?php
header('Access-Control-Allow-Origin:* ');
/*shows warning without isset*/
/*$form = $_GET["search"];
echo $form;*/
/*with isset shows not found*/
if(isset($_POST["search"])){
$form = $_GET["search"];
echo $form;
}else{
echo "not found";'ghd'
}
?>
xhr.open('get', ...)
,$_POST["search"]
… ಠ_ಠ