Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Как получить определённые данные из ajax запроса?

Расскажу ситуацию: Есть ajax код который подставляет значения из корзины

12345678910111213
 $(document).on("click", ".menu__skins-sell", function () { 
  let skin_id_sell = $(this).data("skin-id"); 
  $.ajax({ 
    type: "POST", 
    url: "ajax_profile.php", 
    data: { 
      skin_id_sell: skin_id_sell, 
    }, 
    success: function (result) { 
      $("#menu_skin").html(result); 
    }, 
  }); 
}); 

Я хочу чтобы я мог динамически менять и корзину и баланс на сайте, можно ли это сделать без двух php файлов и без двух ajax запросов? Ведь в result возвращается вся страница. Пока что баланс меняется только при обновлении страницы

По дате
По рейтингу
Аватар пользователя
Новичок

Если не будете отвечать ответы лучшими – больше не буду отвечать) А то расписываешь, в комментах и на другие вопросы отвечаешь, а КПД только падает. Абидна.

Используйте JSON.

123456789101112131415
 $(document).on("click", ".menu__skins-sell", function () {  
  let skin_id_sell = $(this).data("skin-id");  
  $.ajax({  
    type: "POST",  
    url: "ajax_profile.php",  
    data: {
      skin_id_sell: skin_id_sell,  
    },  
    success: function (result) {
      var result_parsed = JSON.parse(result);
      $("#menu_skin").html(result.menu_skin);  
      $("#balance").html(result.balance);  
    },  
  });  
}); 

PHP:

123456
 $return = [];

$return['menu_skin'] = "<h1>blablabla</h1>";
$return['balance'] = "<span style=\"color: red\">Сто тыщ мульёнов рублей</span>";

echo json_encode($return); 


Таким образом из PHP-скрипта вы вернёте что-то подобное:

1
 {"menu_skin":"blablabla","balance":"blablabla2"} 

JS преобразует эту строку в массив:

12
 "menu_skin" => "blablabla",
"balance" => "blablabla2" 

И вы сможете условно двум элементам задать отдельные значения, полученные при одиночном обращении к скрипту. Сначала нужно будет отпарсить результат, вернувшийся из PHP:

12
 success: function (result) {
    var result_parsed = JSON.parse(result); 

И потом можно будет отдельно распихивать куски результата куда вам нужно:

123
     $("#menu_skin").html(result_parsed.menu_skin);
    $("#balance").html(result_parsed.balance);
} 


Могут быть пляски с экранированием спецсимволов со стороны PHP и де-экранированием со стороны JS, поскольку HTML подразумевает использование кавычек, как и синтаксис JSON. Но тут уже не помогу, ибо делал подобное уже очень давно.

Аватар пользователя
Мудрец

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

Аватар пользователя
Искусственный Интеллект

1. такая метода приведет к дырам на твоем сайте..
2. "ведь в result возвращается вся страница" - что отправляешь с сервера, то и приходит, если отправляешь ненужные данные, то они и приходят