例如,在外部JavaScript文件中,我在一个简单的$(document).ready函数中有这个:
$.getJSON("/aTest.json", function (jsonObj) {
$("#testJSONBtn").click(function () {
var val = "";
for (var i = 0; i <= jsonObj.events.length; ++i) {
val += jsonObj.events[i].title + ", " + jsonObj.events[i].date + ", " + jsonObj.events[i].explanation + "<br/>";
}
$("#JSONOutput").append(val);
});
});
Run Code Online (Sandbox Code Playgroud)
JavaScript控制台一直告诉我服务器返回404(未找到),但该文件肯定是该名称,并且正好在该路径上.所有其他资源都可以通过网站访问.我试过移动文件并重命名它,以及其他一些东西,所以我觉得这可能与WebMatrix有关,它运行的IIS版本(它是8?),还是文件扩展我正在使用(.json).外部json文件不应该存储在扩展名为.json的文件中吗?
额外的特点:
我曾经有两个同名文件,一个是.json文件,另一个是.cshtml,它们在同一个目录中.在这段时间内,上面的函数没有返回404,实际上它根本没有返回任何内容......它没有做任何事,但它没有返回任何错误.
如果重要的话,所有ID和选择器都经过五元检查(以及更多).
上面的函数有什么问题,或者外部.js文件(或WebMatrix的IIS)不能像这样访问另一个外部.json文件?
考虑到我有这样的元素:
<p class="ELP">2/1/2013 - <a id="EL3" class="ELLink" href="/Event htms/Event.cshtml?title=Okmulgee Public Schools County Professional Day&explanation=Okmulgee Public Schools County Professional Day.&dateString=2-1-2013">City Public Schools County Professional Day</a></p>
Run Code Online (Sandbox Code Playgroud)
为什么这个JavaScript/jQuery工作......:
$(".ELP").click(function (){
var stringDate = $(this).text().substring(0, 8)
console.log(stringDate)
});
Run Code Online (Sandbox Code Playgroud)
Console.log生成:2013年2月1日
...而这个JavaScript/jQuery没有?
$(".ELLink").click(function (){
var stringDate = $(this).parentNode.text().substring(0, 8)
console.log(stringDate)
});
Run Code Online (Sandbox Code Playgroud)
由于JavaScript错误,Console.log不产生任何内容:未捕获的TypeError:无法调用未定义的方法"text"
很明显,我可以看到它不是"获得"正确的元素,但为什么呢?不是'a'元素的第一个父节点'p'元素?据我所知,没有(至少没有跨浏览器/平台兼容)的有效css选择器用于元素的直接父节点,或者我只会使用它.
我没看到什么?
在我创建了自己的json编码器之后,我意识到它正在用两个转义反斜杠替换双引号而不是一个.
我意识到,现在,C#有一个内置Json.Encode()方法,是的,我已经让它工作了,但是,我感到困惑的是为什么下面的代码(我建立的json编码器)没有像我那样替换引号期望.
这是我的json编码器方法:
public static string jsonEncode(string val)
{
val = val.Replace("\r\n", " ")
.Replace("\r", " ")
.Replace("\n", " ")
.Replace("\"", "\\\"")
.Replace("\\", "\\\\");
return val;
}
Run Code Online (Sandbox Code Playgroud)
替换呼叫:Replace("\"", "\\\"")被替换"用\\",这当然产生无效JSON,因为它看到两个反斜杠(一个作为转义字符,很象上述C#)作为JSON文件中的单个"真正的"反斜线,因此不逸出如预期的那样双引号.Replace("\\", "\\\\")然而,该调用完美地工作(即,它将两个反斜杠替换为两个,如我所料).
根据我的观点,我很容易告诉Replace方法没有执行函数,就像我期望的那样.我的问题是为什么?我知道我不能使用,Replace("\"", "\\"")因为反斜杠也是C#的转义字符,所以它会产生语法错误.使用Replace("\"", "\"")也是愚蠢的,因为它会用双引号替换双引号.
为了更好地理解C#中的替换方法,我很想知道为什么Replace方法的行为与我期望的不同.如何Json.Encode实现这种级别的编码?
我正在开始一个新项目,之前我在<td>单元格中有垂直对齐的内容,所以这个错误有点出乎意料.此外,我所做的任何研究(我之前也做过)都会产生我期望的信息(不能应用于vertical-align块元素,应用display: table-cell;等).然而:
我的简单html文档中有以下表格:
<table id="headingTable">
<tr>
<td id="dateHolder">2013-07-24 15:03:18</td>
<td><h2>City of Okmulgee Authorized Leave Request</h2></td>
<td><button type="button" class="printBtn">Print Form</button></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
使用此适用的CSS:
table#headingTable
{
width: 100%;
}
td
{
vertical-align: middle;
}
h2
{
font-family: Tahoma, Geneva, sans-serif;
text-align: center;
}
.printBtn
{
white-space: nowrap;
font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif;
font-size: 1em;
border-width: 3px;
border-color: #959595;
cursor: pointer;
}
#dateHolder
{
float: left;
}
Run Code Online (Sandbox Code Playgroud)
该<td id="dateHolder">电池应显示在中间的日期和时间,连下两个表细胞该行排列,但你可以在这里看到,它不会:

我想这个问题在我身下,但显然不是,因为我被引导相信只要它是一个内联元素,或者至少是一个元素display: …
我知道有一种方法可以在常规的Sql Server中执行此操作,如果我没有弄错,它看起来像这样:
SELECT UNIX_TIMESTAMP(ba_trans_entered) * 1000 AS 'dateUTC'
Run Code Online (Sandbox Code Playgroud)
然而,我承认,我没有得到这个* 1000部分,但这不是重点.
当我尝试在SQL Server CE中执行此查询时,它只是告诉我(即,WebMatrix告诉我):
'UNIX_TIMESTAMP' is not a recognized built-in function name.
Run Code Online (Sandbox Code Playgroud)
我假设UNIX_TIMESTAMPSql Server Compact不支持.
此外,我尝试使用Google搜索并在SE上搜索,但没有与SQL Server CE相关的数据显示,因此在给定的环境中可能没有办法.
有没有办法将'datetime'(例如:)转换7/13/2007 12:00:00 AM为时间戳(例如:) 1184302800000?我知道我可以在JavaScript中执行此操作,但我被告知在查询本身中执行此操作可能会更快,因为我正在提取大量数据...
我正在尝试使用jQuery输入掩码插件(jquery.maskedinput-1.3.min.js),我搜索了几个示例/解决方案,我的代码与其他工作示例完全相同,但它根本就不会为我工作.请记住,我的代码目前仅测试此插件(尝试使其工作,这将解释为什么我尝试将日期输入掩码应用于名称字段)我的代码如下:
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Persons of Interest</title>
<link rel="stylesheet" type="text/css" href="/Default_Styler.css" />
<link rel="shortcut icon" href="/person.ico" type="image/x-icon" />
<script src="/Scripts/jquery.1.7.2.js" type="text/javascript"></script>
<script src="/Scripts/jquery.maskedinput-1.3.min.js" type="text/javascript"></script>
<script src="/Scripts/FormHandler.js" type="text/javascript"></script>
</head>
<body>
<div id="WrapperDiv">
<div id="TitleBar"> <!--Beginning of Title Bar-->
<div style="padding-top: 30px; text-align: center;">Persons of Interest</div>
</div> <!--End of Title Bar-->
<div id="FormHolder">
<form action="">
<p><label>POI Name: </label><input type="text" id="POI Name" name="POI Name" value=""/></p>
</form>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
jQuery(function ($) {
$("#POI Name").mask("99/99/9999");
}); …Run Code Online (Sandbox Code Playgroud) 我有一个包含两种形式的页面。
一种形式只有一个隐藏的输入元素,用于帮助连接查询字符串。
在另一个表单中,我有一个简单的按钮元素(不是输入类型提交按钮),想法是提交另一个表单 onclick(使用 JavaScript)。按钮就是这种形式。
就目前而言(出于测试目的),我目前所做的只是调用一个名为 changeSpec() 的 JavaScript 函数,其中绝对唯一的一行代码是一个警告框,它显示了隐藏输入元素的值。
按钮:
<td class="entry" colspan="3"><button onclick="changeSpec()">Change Species</button></td>
Run Code Online (Sandbox Code Playgroud)
带有隐藏输入元素的表单:
<form id="specChange" action="" method="get"><input id="hiddenSpec" type="hidden" value='@oppSpec' /></form>
Run Code Online (Sandbox Code Playgroud)
JavaScript 函数:
function changeSpec()
{
alert($("#hiddenSpec").val());
}
Run Code Online (Sandbox Code Playgroud)
当我单击普通按钮元素时,出现服务器端错误 (YSOD)...我的意思是,哇,没看到,哈哈。
我得到的错误与此无关,因为它是查询字符串中的一些强制转换错误,我仍然需要解决(此时,只要提交大表单 [不是上面显示的那个],就会发生这种 YSOD)。另外这个 YSOD 是运行时错误,而不是编译器错误,因为页面加载没有问题,直到它认为它已提交,并且随后执行 IsPost 分支。
无论如何,我可以以某种方式告诉(即使我设置 onclick=""),这个位于大表单中的按钮实际上是在尝试提交表单?
我之前不仅在其他表单中使用过常规按钮元素,而且一直认为常规按钮永远不会提交表单,我还多次清除缓存,只是为了确保没有任何愚蠢的(在那个级别)发生. 无论如何,似乎我需要接受有关 html 表单如何解释普通按钮元素的教育。
请帮忙,我在这里真的很茫然。这怎么可能?
谢谢,如果需要更多代码,请告诉我。
我是WinForms的新手,我很习惯在CSS中设置样式,所以也许我没有正确地看WinForm的Bottom Margin属性,但是,无论我设置了一个任意大的底边距数字,它似乎都有根本没有效果.
我想要的是将窗体的设计扩展到初始可视窗口下方(垂直滚动条显示就好了),并为这些元素设置一个底边距,以便元素的底部不会与窗户的最底部(一个小空间会很好).
我已经在几个元素上尝试了这个,只是为了看看它是否只是一个元素(或者它是在窗口的初始可见部分之外的事实)给我带来了问题,但我似乎无法获得任何效果超出保证金属性.
看这里:http: //msdn.microsoft.com/en-us/library/ms229627.aspx 看来这确实是保证金属性应该做的事情.此外,我无法在任何元素的GUI控件中找到任何填充.
就目前而言,我主要只为事件处理程序编写C#,直到我更好地掌握Visual Studio将所有内容放在两个部分类(以及其他.cs文件)中的位置.
如果有帮助,这里是设计器文件的代码:
namespace WindowsFormsApplication1
{
partial class IntroForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// …Run Code Online (Sandbox Code Playgroud) 在C#.net中如果我要写这个方法:
public static string returnFileNameOnly(string returnString)
{
string val = returnString.Substring(returnString.LastIndexOf("/"));
return val;
}
Run Code Online (Sandbox Code Playgroud)
我几乎只是重写了Path.GetFileName吗?或者还有更多呢?据我所知,Path.GetFileName(fileVariable.FileName)并fileVariable.FileName除非用户使用Internet Explorer返回相同的事情(虽然我只试了一下IE,Chrome和火狐).
不确定那个方法是否就是那个方法,真的.
----------------对于那些好奇的人-----------------------
我问,因为在我学习这个Path.GetFileName方法之前,我已经使用过与我上面在网站上所写的方法非常相似的东西,而且我不确定是否应该费心去改变它.
目前我根本不允许使用撇号(以及你可以看到的其他角色),对每个字段重复:
foreach(char c in Comments)
{
if(c=='\'' || c=='$' || c=='\"' || c=='&' || c=='%' || c=='@' || c=='-' || c=='<' || c=='>')
{
errorMessage = "You have entered at least one invalid character in the \"Comments\" field. Invalid characters are: [\'], [\"], [&], [$], [@], [-], [<], [>], and [%]";
}
}
Run Code Online (Sandbox Code Playgroud)
我已经编写了一段时间,我正在变得更好,但真正的问题是,虽然我确信有一种方法可以有效地"剥离"或以其他方式验证用户输入,但我不确定方法是最好的,可能直到安全危机迫在眉睫.
如果必须的话,我会决定永远不会允许单引号进入表格(就像现在一样),但是这可能会加剧任何名字的人... Bill O'Reilly的名字字段等等.
可能还有其他(我不知道该怎么称呼它们,'插件?''在程序之外?')可以为我做这个工作,但这实际上是无用的,因为我不仅不知道如何为了整合它,我不知道如何专门定制它到我的Web界面/数据库.
是否有任何代码可以帮助我从正常的撇号中检测sql注入撇号(通过它周围的字符?)?请记住,我的一些字段最多可容纳500个字符(textareas),最多可容纳1,000个字符.
感谢您的任何想法或帮助!