尝试使用Web套接字传递错误消息时遇到问题.我可以复制我面临的问题,JSON.stringify以迎合更广泛的受众:
// node v0.10.15
> var error = new Error('simple error message');
undefined
> error
[Error: simple error message]
> Object.getOwnPropertyNames(error);
[ 'stack', 'arguments', 'type', 'message' ]
> JSON.stringify(error);
'{}'
Run Code Online (Sandbox Code Playgroud)
问题是我最终得到一个空对象.
浏览器
我首先尝试离开node.js并在各种浏览器中运行它.Chrome版本28给了我相同的结果,有趣的是,Firefox至少做了一次尝试,但遗漏了消息:
>>> JSON.stringify(error); // Firebug, Firefox 23
{"fileName":"debug eval code","lineNumber":1,"stack":"@debug eval code:1\n"}
Run Code Online (Sandbox Code Playgroud)
替换功能
然后我查看了Error.prototype.它表明原型包含诸如toString和toSource之类的方法.知道函数不能被字符串化,我在调用JSON.stringify时包含了一个replacer函数来删除所有函数,但后来意识到它也有一些奇怪的行为:
var error = new Error('simple error message');
JSON.stringify(error, function(key, value) {
console.log(key === ''); // true (?)
console.log(value === error); // true …Run Code Online (Sandbox Code Playgroud) 如何在角度中获得反转阵列?我正在尝试使用orderBy过滤器,但它需要一个谓词(例如'name')来排序:
<tr ng-repeat="friend in friends | orderBy:'name':true">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
<td>{{friend.age}}</td>
<tr>
Run Code Online (Sandbox Code Playgroud)
有没有办法反转原始数组,没有排序.像那样:
<tr ng-repeat="friend in friends | orderBy:'':true">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
<td>{{friend.age}}</td>
<tr>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用phantomJS(这是一个很棒的工具btw!)为我有登录凭据的页面提交表单,然后将目标页面的内容输出到stdout.我能够使用幻像访问表单并成功设置其值,但我不太确定提交表单和输出后续页面内容的正确语法.到目前为止我所拥有的是:
var page = new WebPage();
var url = phantom.args[0];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
console.log(page.evaluate(function () {
var arr = document.getElementsByClassName("login-form");
var i;
for (i=0; i < arr.length; i++) {
if (arr[i].getAttribute('method') == "POST") {
arr[i].elements["email"].value="mylogin@somedomain.com";
arr[i].elements["password"].value="mypassword";
// This part doesn't seem to work. It returns the content
// of the current page, not the content of the page after
// the submit has been executed. Am I …Run Code Online (Sandbox Code Playgroud) 我至少一个月没有更新任何东西.我只是正常工作,突然菜单都是空白的,所以我决定重启eclipse.我点击"关闭"和"确定"以保存所有内容,但没有任何反应,所以我再次点击关闭并关闭eclipse.我点击了eclipse,加载屏幕只闪烁并消失,然后是一条消息告诉我检查.log文件.我已经多次重新启动电脑,尝试在安全模式下运行并运行eclipse.exe -clean,但没有任何作用.
有任何想法吗?
!SESSION 2013-03-12 13:46:10.078 -----------------------------------------------
eclipse.buildId=I20120608-1400
java.version=1.7.0_07
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments: -product org.eclipse.epp.package.jee.product
Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -clean
!ENTRY org.eclipse.ui 4 4 2013-03-12 13:46:55.800
!MESSAGE An internal error has occurred.
!STACK 0
java.lang.NullPointerException
at org.eclipse.ui.internal.Workbench.createWorkbenchWindow(Workbench.java:1228)
...
at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
!ENTRY org.eclipse.ui.workbench 4 0 2013-03-12 13:46:55.803
!MESSAGE An unexpected exception was thrown.
!STACK 0
java.lang.NullPointerException
at org.eclipse.ui.internal.Workbench.createWorkbenchWindow(Workbench.java:1228)
...
at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
!ENTRY org.eclipse.ui 4 4 …Run Code Online (Sandbox Code Playgroud) - name: Go to the folder
command: chdir=/opt/tools/temp
Run Code Online (Sandbox Code Playgroud)
当我运行我的剧本时,我得到:
TASK: [Go to the folder] *****************************
failed: [host] => {"failed": true, "rc": 256}
msg: no command given
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢.
我无法弄清楚如何强制application/jsonFlask中的视图的MIME类型.这是一个简单的视图,我为了演示目的而将它们拼凑在一起:
@app.route("/")
def testView():
ret = '{"data": "JSON string example"}'
return ret
Run Code Online (Sandbox Code Playgroud)
JSON字符串(保存在变量中ret)是从其他地方收集的(使用来自其他程序的stdout subprocess),所以我不能使用jsonifyFlask提供的.
我已经看过"返回Json"文档和这个 Stackoverflow问题,但到目前为止我还没有运气.我一直在寻找一段时间并将继续搜索,但我想我会问这里以防万一有人遇到过这个问题.
谢谢.
请参阅以下答案
解决方案:
@app.route("/")
def testView():
ret = '{"data": "JSON string example"}'
resp = Response(response=ret,
status=200,
mimetype="application/json")
return resp
Run Code Online (Sandbox Code Playgroud)
我发现这个网站很有用:用Python和Flask实现RESTful Web API
我有一个包含几个<div>容器的HTML页面.我需要<div>根据用户ID 显示这些容器.例如:我<div>在页面中创建了4个容器,例如div1,div2,div3和div4.我有两个用户:user1和user2.
我想在用户1访问该页面时显示div1和div3.并在user2访问它时显示div2和div4.我想用ng-hide和ng-showAngularJS的指令.我怎样才能做到这一点?
在Java FX 2.2中工作.场景的水平宽度是固定的,但在编译时是未知的.我想在一个完全填充场景中的水平空间的水平行中放置2个或更多按钮,每个按钮的宽度完全相同.按钮数随程序状态动态变化.什么程序片段可以实现这一目标?
我想我先用一个例子来证明这个问题,
jsfiddle:http://jsfiddle.net/e2UfM/15/ (经FF 12测试,Chrome 18.0.1025.168测试)
用法:
当用户对他们选择的本地文件进行更改时,非webkit浏览器不会更新其大小属性,而Chrome则会更新.两个浏览器都会更新文件的内容.
有没有办法让Firefox更新文件大小,类似于Chrome在这种情况下的工作方式?
用户选择一个对于表单来说太大的文件,他们点击提交按钮并收到他们的文件太大的通知(通过警报,"大小"栏(见下文)等)
他们在本地修改文件,然后再次点击提交.
在Chrome中,文件大小会更新.当用户再次点击提交按钮时,它将再次验证其更新大小并允许上传.在Firefox中,用户必须先重新选择表单上的文件才能看到文件大小发生变化.
Firefox的部分解决方法 - @ ZER0的答案
File API的一个目的是在上传到服务器之前验证客户端的文件大小,如果我没有弄错的话.
考虑表单中存在2MB上载限制并且用户选择1MB文件的情况.Firefox和Chrome都会看到文件大小小于2MB并将其添加到表单中.我们还要说有一个简洁的条形图显示它们选择了多大的文件,以及它是否会影响文件大小限制:

但是,然后用户决定在提交表单之前在本地对该文件的内容进行微小更改,并将大小超过2MB.
在Google Chrome中,我可以在客户端优雅地处理此问题.我可以在用户提交表单时再次检查文件大小,并在将其发送到服务器之前验证它实际上仍然低于1MB.但即使在用户提交表单之前,在Chrome中,我可以动态更新小条形图,因为它们在本地进行更改:

如果用户填写大型表单,则此"条形"(或即时通知上的任何其他形式,例如警报)非常有用.我希望用户立即知道他们的文件太大,以便他们可以更正它,而不仅仅是当他们提交表单时.
在Firefox中,因为文件大小永远不会更新,所以很乐意上传2MB文件,认为它仍然是1MB!我使用服务器端逻辑来仔细检查文件大小,但我宁愿保存服务器之旅.
以上示例适用于更多人,因为更多人可能已经处理了表单中的文件上传与使用File API中的切片功能.这是我遇到问题的具体方式.
在我的表单中,用户选择一个文件,当他们点击提交时,屏幕上只显示最后10,000个字节,textarea以确认它确实是他们想要的文件.
考虑一个大小为50,000字节的文件.用户在表单中选择它,Chrome和Firefox都显示字节40,000 - 50,000中的字节textarea.
现在,用户将一些内容添加到文件中,并将相同的文件碰到70,000字节!
谷歌浏览器将正确更新textarea包含字节60,000-70,000.在Firefox中,因为大小将保持不变,所以它仍然只显示该范围内的字节40,000-50,000.
编辑:更新了jsfiddle以演示FF仍然可以读取更新的文件内容.只是文件大小不会随着这些新内容而改变.
编辑: https ://bugzilla.mozilla.org/show_bug.cgi?id = 756503(错误报告)
编辑:已添加和更新示例以回应@EduárdMoldován的 …
我有两个文本框用于用户的名字和第二个名字,我创建了一个转换器,当文本等于特定字符串时,它会更改文本框的背景颜色.我遇到的问题是文本框只会在运行时更新,并且在我更改文本时不会更新文本框.
XAML:
<TextBox x:Name="forenameTextBox" Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="3" Grid.Row="1"
Background="{Binding Staff,Converter ={StaticResource StaffNameToBackgroundColourConverter1}}"
Text="{Binding Staff.Forename, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" VerticalAlignment="Center" Width="120"/>
<Label Content="Surname:" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="2" VerticalAlignment="Center"/>
<TextBox x:Name="surnameTextBox" Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="3" Grid.Row="2"
Background="{Binding Staff,Converter={StaticResource StaffNameToBackgroundColourConverter1}}"
Text="{Binding Staff.Surname, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" VerticalAlignment="Center" Width="120"/>
Run Code Online (Sandbox Code Playgroud)
转换器代码:
public class StaffNameToBackgroundColourConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var staff = (Staff) value;
if (staff.Forename == "Donald" && staff.Surname == "Duck")
{
return "Yellow";
}
else …Run Code Online (Sandbox Code Playgroud)