Выбор страны (AJAX/JSON + PHP)

Не могли бы вы помочь мне в этой ситуации?

Допустим, у меня есть это прямо сейчас:

HTML

<select name = "insta_country_code" class = "widget-user-country country-selector" data-account-name = "
    <?php echo $account1['Username'] ?>">
    <option value = "br">Brazil</option>
    <option value = "cl">Chile</option>
    <option value = "es" selected>Spain</option>
    <option value = "mx">Mexico</option>
    <option value = "gb">United Kingdom</option>
    <option value = "cr">Costa Rica</option>
</select>

JS

$(document).ready(function () {
    $('.country-selector').change(function () {
        var ig_name = $(this).data('account-name');
        var country_code = $(this).val();
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: 'change-country.php',
            data: {
                insta_user: ig_name,
                country_code: country_code,
            },
            success: function (data) {
                if (data['status'] != 1) {
                    $.alert('server error');
                }
            },
            error: function () {
                $.alert('error');
            }
        });
    })
});

Каким должен быть мой .php файл? Мне нужно сделать что-то вроде этого:

$InstagramCountry = $data['country_code'];
$InstagramUsername = $data['insta_user']);

$sql = mysql_query("UPDATE igaccounts SET Country='$InstagramCountry' WHERE Username='$InstagramUsername'");

Большое спасибо!

Почему вы используете mysql_*?

Lawrence Cherone 04.03.2019 03:13

@LawrenceCherone Что мне использовать? Вы ссылаетесь на MySQLi? Я ценю любую информацию. Спасибо!

Kevin 04.03.2019 03:31

Кевин RE: mysql_ пожалуйста, прочитайте этот вопрос-ответ

Martin 04.03.2019 11:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
111
3

Ответы 3

Поскольку вы используете метод POST для отправки данных в php-код на стороне сервера, вы можете перехватывать данные, используя глобальную переменную $_POST ИЛИ $_REQUEST, например:

$InstagramCountry = $_POST['country_code'];
$InstagramUsername = $_POST['insta_user']);

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

error: function(xhr, textStatus, error){
      console.info(xhr.statusText);
      console.info(textStatus);
      console.info(error);
  }

Чтобы зафиксировать ошибку mysqli (я призываю вас использовать mysqli и избегать использования старого/устаревшего mysql), SEE БОЛЕЕ

$result = mysql_query('UPDATE igaccounts SET Country='$InstagramCountry' WHERE Username='$InstagramUsername');

if (!$result) {
    die('Invalid query: ' . mysql_error());
}

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.

Спасибо, я тоже думал о $_POST, но моя проблема заключается в преобразовании всего файла PHP в соответствии с моим текущим JS.

Kevin 04.03.2019 03:20

это hepled т.е. есть ли что-то, что у вас все еще есть проблема?

Always Sunny 04.03.2019 03:28

Независимо от того, что я использую в своем файле PHP, система выдает мне $.alert('error');, я думаю, мне нужно уточнить, что все внутри .php с результатами, успешно (или нет), но я никогда не использовал АЯКС/JSON

Kevin 04.03.2019 03:30

Я ценю вашу помощь. Это странно, потому что теперь с этой опцией отладки я не получаю ошибок, когда пытаюсь выбрать другую опцию страны, но он не выполняет и не обновляет запрос MySQL.

Kevin 04.03.2019 03:39

Я в такой же ситуации :(

Kevin 04.03.2019 18:14

Попробуйте это, это должно работать для вашего случая. Я проверил это на своем локальном хосте. Для вашего HTML-файла:

<select name = "insta_country_code" class = "widget-user-country country-selector" data-account-name = "<?php echo $account1['Username'] ?>">
            <option value = "br">Brazil</option>
            <option value = "cl">Chile</option>
            <option value = "es" selected>Spain</option>
            <option value = "mx">Mexico</option>
            <option value = "gb">United Kingdom</option>
            <option value = "cr">Costa Rica</option>
        </select>

Для вашего JS-файла:

<script>
            $(document).ready(function () {
                $('.country-selector').change(function () {
                    var ig_name = $(this).data('account-name');
                    var country_code = $(this).val();
                    $.ajax({
                        type: 'POST',
                        dataType: 'json',
                        url: 'change-country.php',
                        data: {
                            insta_user: ig_name,
                            country_code: country_code,
                        },
                        success: function (data) {
                            if (data['status'] != 1) {
                                $.alert('server error');
                            }
                        },
                        error: function () {
                            $.alert('error');
                        }
                    });
                })
            });
        </script>

Для вашего файла .PHP:

<?php 
$data = $_REQUEST; 
$InstagramCountry = $data['country_code'];
$InstagramUsername = $data['insta_user'];
echo "insta_user = ".$InstagramUsername . " AND country_code = " . $InstagramCountry; exit; 

Скажи мне, если все еще нужна помощь, братан.

Независимо от того, что я использую в своем файле PHP, система выдает мне $.alert('error');, я думаю, мне нужно уточнить, что все внутри .php с результатами, успешно (или нет), но я никогда не использовал АЯКС/JSON

Kevin 04.03.2019 18:13

И что мне нужно сделать, так это в .php: mysql_query("ОБНОВЛЕНИЕ igaccounts SET Country='$InstagramCountry' WHERE Username='$InstagramUsername'")

Kevin 04.03.2019 18:14

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

ваш php-скрипт:

                  if (isset($_POST["action"])) {
                          $action = $_POST["action"];
                          switch ($action) {
                              case 'SLC':
                                  if (isset($_POST["id"])) {
                                      $id = $_POST["id"];
                                      if (is_int($id)) {
                                          $query = "select * from alumni_users where userId = '$id' ";
                                          $update = mysqli_query($mysqli, $query);
                                          $response = array();
                                          while($row = mysqli_fetch_array($update)){
                                          .......
                                          fill your response here

                                          }
                                         echo json_encode($response);
                                      }
                                  }
                                  break;

                          }
                      }

Где действие — это команда, которую вы хотите выполнить SLC, UPD, DEL и т. д., а идентификатор — параметр.

затем в вашем ajax:

                function getdetails() {
                      var value = $('#userId').val(); // value can be your array ! note: if you send a object json_encode(json_decode(,MyObj,true))
                     return $.ajax({
                          type: "POST",
                          url: "getInfo.php",
                          data: {action: "SLC",id: value }
                      })
                  }

назовите это так:

    getdetails().done(function(response){
                  var data=JSON.parse(response);
                  if (data != null) {
                  //do somthing with your Data
                  }
                  })

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

Другие вопросы по теме