мой внешний php не понимает значение атрибута name входного файла, которое объявлено в render () ReactJS

-2

Я пытаюсь создать приложение 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-коде. Простите.

  • 1
    AJAX не передает автоматически значения. Тот факт, что у вас есть атрибут name, не имеет значения, когда вы отправляете данные через ajax. Вы должны конкретно сообщить AJAX-звонку, какие данные вы хотите отправить. Он не просто отправляет всю форму как обычный постбэк.
  • 1
    xhr.open('get', ...) , $_POST["search"] … ಠ_ಠ
Показать ещё 3 комментария
Теги:
forms

2 ответа

1
Лучший ответ

Единственное, что отправляет ваш Ajax, это this.refs.search.value - не имя "поиск"/не закодированное в кодировке/не кодирование нескольких частей. Действительно, вы, кажется, изобрели свою собственную систему кодирования.

Пытаться:

xhr.open('get','//localhost:80/ReactStudy/travelReduxApp/public/server/search.php?search=' + value,true);

в Ajax.js

  • 0
    Благодарю. Решил вопрос. Простите меня снова.
-3
<?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'
 }
 ?>
  • 0
    Некоторое объяснение вашего ответа необходимо. Что изменилось по сравнению с оригинальным кодом?
  • 0
    Я не вижу, как это поможет? Помимо введения того, что после эха выглядит синтаксической ошибкой, вы ничего не изменили по сравнению с оригинальной версией при первом редактировании вопроса, и вы, похоже, не заметили ошибку в ней, несмотря на различные существующие комментарии. Если вы думаете, что ваш код поможет, вам нужно будет объяснить, чтобы люди нашли его полезным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню