更新:现在可以通过JSON_TABLE函数在MySQL 8中实现:https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html
我喜欢MySQL 5.7中的新JSON函数,但是试图将JSON中的值合并到一个普通的表结构中.
从中获取JSON,操作和提取数组等很简单.一路JSON_EXTRACT.但是从JSON数组到行的逆转呢?也许我对现有的MySQL JSON功能非常密切,但我还是无法解决这个问题.
例如,假设我有一个JSON数组,并希望为数组中的每个元素插入一行及其值?我找到的唯一方法是编写一堆JSON_EXTRACT(...'$ [0]')JSON_EXTRACT(...'$ [1]')等并将它们组合在一起.
或者,说我有一个JSON数组,并希望GROUP_CONCAT()它到一个逗号分隔的字符串?
换句话说,我知道我可以这样做:
SET @j = '[1, 2, 3]';
SELECT GROUP_CONCAT(JSON_EXTRACT(@j, CONCAT('$[', x.n, ']'))) AS val
FROM
(
SELECT 0 AS n
UNION
SELECT 1 AS n
UNION
SELECT 2 AS n
UNION
SELECT 3 AS n
UNION
SELECT 4 AS n
UNION
SELECT 5 AS n
) x
WHERE x.n < JSON_LENGTH(@j);
Run Code Online (Sandbox Code Playgroud)
但这伤害了我的眼睛.而我的心.
我该怎么做:
SET @j = '[1, 2, 3]';
SELECT GROUP_CONCAT(JSON_EXTRACT(@j, '$[ * ]'))
Run Code Online (Sandbox Code Playgroud)
...并将它与数组中的值和JSON数组本身连接在一起?
我想我在这里寻找的是某种JSON_SPLIT:
SET …Run Code Online (Sandbox Code Playgroud) 有没有办法确定哪个元素在onsubmit处理程序中提交了一个表单?试图编写一个知道点击了哪个元素的通用处理程序.例如,给定以下形式:
<form onsubmit="onSubmitHandler">
<input type="submit" name="submit1" />
<input type="submit" name="submit2" />
</form>
Run Code Online (Sandbox Code Playgroud)
如何在onSubmitHandler中确定单击了哪个提交按钮?我尝试了event.target/event.srcElement,但它提供了表单,而不是实际的提交按钮.
更新:我在这里写一个通用控件,所以它不知道表单上有什么.解决方案需要在不知道和更改表单的html的情况下工作.我的后备是走DOM,找到可能导致提交的所有按钮,但我想避免这种情况.
我已经尝试了一切我能想到的让Kindle Fire浏览器接受上传,没有骰子.文件选择器显示,但上传错误.在蓝色的月亮中它每次都有效,我无法弄明白为什么.我已经尝试过HTML5和普通的FORM POST上传.
有人有想法,还是运气好?
此外,文件选择器假装为HTML5,但然后返回0作为文件大小,拧紧任何文件大小显示.
有没有办法在 Razor 中禁用页面检测?我遇到了一个问题,我试图在 _AppStart 中设置一个 razor 模板委托,然后在其他页面上使用它。它会正常工作,除了检测在 BeginContext/EndContext 中保留对 _AppStart 的引用,这会在其他页面上爆炸。
例如:
// TemplateHolder.cs
public static class TemplateHolder
{
public static Func<object, object> TheTemplate = null;
}
@* _AppStart.cshtml *@
@{
TemplateHolder.TheTemplate = @<b>the template</b>;
}
@* OtherPage.cshtml *@
@TemplateHolder.TheTemplate(Model);
Run Code Online (Sandbox Code Playgroud)
在您尝试在 OtherPage.cshtml 中呈现模板之前,一切似乎都可以正常工作,在此之前,您将从内部检测尝试获取 _AppStart 的 HttpContext 时收到错误。
用一点点反射来解决这个问题很容易:
static readonly PropertyInfo _instrumentationService = typeof(WebPageExecutingBase).GetProperty("InstrumentationService", BindingFlags.NonPublic | BindingFlags.Instance);
static readonly PropertyInfo _isAvailableProperty = typeof(InstrumentationService).GetProperty("IsAvailable");
public static void DisableInstrumentation(this WebPageExecutingBase page)
{
_isAvailableProperty.SetValue(_instrumentationService.GetValue(page), false);
}
Run Code Online (Sandbox Code Playgroud)
... 这可以防止 BeginContext/EndContext 调用被呈现。
但是,Razor 的全部意义不是面向对象和可配置的吗?我觉得我错过了一些东西。
asp.net-mvc ×1
dhtml ×1
html ×1
html5 ×1
javascript ×1
json ×1
kindle-fire ×1
mysql ×1
razor ×1