|
11.07.2019, 11:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,064
|
|
Misha_White,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var obj = {a : 10, b : "test"};
var param = JSON.stringify(obj);
$("#box").attr("data-param", param);
alert($("body").html());
alert($("#box").data("param").b);
});
</script>
</head>
<body>
<div id="box" ></div>
</body>
</html>
|
|
11.07.2019, 11:43
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,064
|
|
Misha_White,
используйте JSON.stringify
|
|
11.07.2019, 11:43
|
Интересующийся
|
|
Регистрация: 17.02.2010
Сообщений: 16
|
|
Ну я про JSON выше и сказал, спасибо.
|
|
11.07.2019, 13:00
|
Интересующийся
|
|
Регистрация: 17.02.2010
Сообщений: 16
|
|
Не выходит цветочек аленький...
вот мой элемент:
<div id="box" data-param = "{'a' : 10, 'b' : 'test'}"></div>
UPD: завтра попробую string.replace заменить кавычки.
Последний раз редактировалось Misha_White, 11.07.2019 в 13:10.
|
|
11.07.2019, 13:31
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,064
|
|
Misha_White,
это костыль
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var obj = $("#box").data("param");
obj = obj.replace(/'/g, '"');
obj = JSON.parse(obj);
alert(obj.b);
});
</script>
</head>
<body>
<div id="box" data-param = "{'a' : 10, 'b' : 'test'}"></div>
</body>
</html>
Сообщение от Misha_White
|
Не выходит
|
значит нет JSON или смотрите куда кавычки исчезают на сервере.
|
|
11.07.2019, 14:23
|
Интересующийся
|
|
Регистрация: 17.02.2010
Сообщений: 16
|
|
С сервера приходит в таком виде
"{'a' : 10, 'b' : 'test'}"
передаю так:
attr = {"data-url":"url", "data-params":{"id":id}}
тип того.
т.к. Python словарь ключи может иметь либо int, либо string.
Попробую ещё на стороне сервера json сформировать, а не словарь.
я бы мог а Ajax-запрос воткнуть "{'a' : 10, 'b' : 'test'}" и оно бы сработало, скорее всего. Но. Мне нужно туда ещё один параметр запихать, который из селекта выбирается... А чтобы запихать, надо преобразовать в объект.
|
|
11.07.2019, 16:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,064
|
|
Сообщение от Misha_White
|
чтобы запихать, надо преобразовать в объект
|
вам изначально нужна строка ссылки, url с параметрами "https://test.ru/?a=10&b=test&c=" никаких обьектов
и потом $.ajax(this.url + valueLowerCase)
|
|
11.07.2019, 17:08
|
Интересующийся
|
|
Регистрация: 17.02.2010
Сообщений: 16
|
|
Нет, я делаю POST-запрос, соответственно передаю словарём параметры
var request = $.ajax({
url: "script.php",
method: "POST",
data: { id : menuId },
dataType: "html"
});
|
|
11.07.2019, 17:11
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,064
|
|
Сообщение от Misha_White
|
я делаю POST-запрос
|
data может быть строкой!
|
|
11.07.2019, 17:18
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,064
|
|
Misha_White,
https://api.jquery.com/jQuery.post/
data ... object or string
var request = $.ajax({
url: this.url + valueLowerCase,
method: "POST",
dataType: "html"
});
<select data-url = "script.php?a=10&id="
|
|
|
|