PHP

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

Расскажу ситуацию: Есть ajax код который подставляет значения из корзины
 $(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 возвращается вся страница. Пока что баланс меняется только при обновлении страницы
Dima Kutcko
Dima Kutcko
1 458
Если не будете отвечать ответы лучшими – больше не буду отвечать) А то расписываешь, в комментах и на другие вопросы отвечаешь, а КПД только падает. Абидна.

Используйте JSON.
 $(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:
 $return = [];

$return['menu_skin'] = "blablabla";
$return['balance'] = "Сто тыщ мульёнов рублей";

echo json_encode($return);

Таким образом из PHP-скрипта вы вернёте что-то подобное:
 {"menu_skin":"blablabla","balance":"blablabla2"} 
JS преобразует эту строку в массив:
 "menu_skin" => "blablabla",
"balance" => "blablabla2"
И вы сможете условно двум элементам задать отдельные значения, полученные при одиночном обращении к скрипту. Сначала нужно будет отпарсить результат, вернувшийся из PHP:
 success: function (result) {
var result_parsed = JSON.parse(result);
И потом можно будет отдельно распихивать куски результата куда вам нужно:
     $("#menu_skin").html(result_parsed.menu_skin);
$("#balance").html(result_parsed.balance);
}

Могут быть пляски с экранированием спецсимволов со стороны PHP и де-экранированием со стороны JS, поскольку HTML подразумевает использование кавычек, как и синтаксис JSON. Но тут уже не помогу, ибо делал подобное уже очень давно.
СТ
Сергей Турусов
11 395
Лучший ответ
Dima Kutcko Я конечно сделал, но всё равно спасибо
Dima Kutcko А можешь ещё помочь? У меня такой вопрос: https://otvet.mail.ru/answer/2020428911/cid-349256625/ Если знаешь ответ давай я создам его ещё раз чтобы выбрать тебя лучшим? Напиши если знаешь ответ, или хотя бы знаешь как помочь
Dima Kutcko А что мне делать при такой ситуации?
Dima Kutcko Если скрин не отображается:
 $return = [];
$return['menu_skin'] =
if (isset($invent_array)) {
foreach ($invent as $row) {
$skin_id = $row["id"];
$skin_img = $row["img"];
$skin_tittle = $row["tittle"];
$skin_name = $row["name"];
$skin_cost = $row["cost"];
?>
Сергей Турусов В строке:
   
последнюю кавычку не экранировал. Поставьте перед ней \
Dima Kutcko Почему-то после 11 строки код не выполняется, видимо потому не может получить
 JSON.parse(result); 
Может надо поставить data-type: JSON ?
 $(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) {
new Audio('/sound/money.mp3').play();
var result_parsed = JSON.parse(result);
$("#menu_skin").html(result_parsed.menu_skin);
$("#balance").html(result_parsed.balance);

},
});
});
1. такая метода приведет к дырам на твоем сайте..
2. "ведь в result возвращается вся страница" - что отправляешь с сервера, то и приходит, если отправляешь ненужные данные, то они и приходят
Игорь Шик
Игорь Шик
90 356
Dima Kutcko Совет то какой?
По хорошему и баланс и корзина должны храниться в БД, а на сайте они только отображаются. Получать одним запросом и обрабатывать одни файлом рнр вполне возможно, это не проблема...
Serg Пух
Serg Пух
8 866
Dima Kutcko Они и так в бд, я не говорил что я туда их не записывал