我正在创建一个html5 - JavaScript应用程序(适用于移动设备,使用PhoneGap).我必须与REST服务进行交互.
该服务现在正在运行 "http://localhost:8080/backend/mvc/"
我正在wamp服务器上开发我的应用程序(apache2)(http://localhost/stage/
)我正在使用Chrome浏览器.
当预先形成ajax调用时,浏览器会响应: XMLHttpRequest cannot load http://localhost:8080/backend/mvc/event. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
所以我找到了几种方法来规避这种跨域的ajax调用问题:
1)启动chrome chrome.exe --disable-web-security
=>没有区别
2)使用mod_proxy配置apache以重定向流量.
我在httpd.conf中启用了:
proxy_module
proxy_connect_module
proxy_http_module
Run Code Online (Sandbox Code Playgroud)
我.htaccess
在www根目录中放了一个文件,内容如下:
# start mod_rewrite
RewriteEngine On
ProxyRequests off
<Proxy>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /EMBackend/ http://localhost:8080/backend/mvc/
ProxyPassReverse /EMBackend/ http://localhost:8080/backend/mvc/
RewriteRule ^/EMBackend/(.*)$ /backend/mvc/$1 [R]
Run Code Online (Sandbox Code Playgroud)
我重新启动了所有服务(apache,php,..)
导致错误500
apache错误日志: [Tue Oct 18 14:30:11 2011] [alert] [client 127.0.0.1] C:/wamp/www/.htaccess: ProxyRequests not allowed here
关于如何解决这个问题的任何线索?
我最近为Moodle贡献了一些代码,它使用HTML5的一些功能,允许通过桌面拖放将文件上传到表单中(代码的核心部分在这里:https://github.com/moodle /moodle/blob/master/lib/form/dndupload.js供参考).
这种运作良好,除了当用户进行拖拽一个文件夹/目录,而不是一个真正的文件.然后将垃圾上传到服务器,但文件名与文件夹匹配.
我所寻找的是一个简单而可靠的方法检测一个存在的文件夹中的文件清单对象,这样我就可以跳过它(并可能返回一个友好的错误消息为好).
我查看了MDN上的文档,以及更一般的网络搜索,但没有透露任何内容.我还查看了Chrome开发人员工具中的数据,看来文件对象的"类型"始终设置为""用于文件夹.但是,我不太相信这是最可靠的跨浏览器检测方法.
有没有人有更好的建议?
如何修改sencha中的Ext.Msg.show以显示两个文本框.现在,当我们设置提示时,它只支持一个文本框:true
Ext.Msg.show({
title: 'Enter values',
width: 500,
buttons: Ext.Msg.OKCANCEL,
multiline: true,
prompt:true,
});
Run Code Online (Sandbox Code Playgroud) 我有一个二维条码生成器在(Java)后端制作一些条形码.它为我提供了数据URL,我使用Javascript在客户端设置它们.一切都适用于Chrome,Firefox.但不是在IE8中(当然!)虽然有一半的图像有效但有一半无效.
我的图像是几百字节(远低于32kb)
这是一个不在 IE8中工作的示例:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAAAAADFHGIkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAEnRFWHRTb2Z0d2FyZQBCYXJjb2RlNEryjnYuAAAAgklEQVR42nVRixKAMAjy/3+a2hBwdVtdD1RELFxOXS6+9v1+F/+ICFs5jpGqsQWSosy3MQbVGSEDC7q4FaQrRiJDepJ1iG2sATggaqkeCc3VqicDDu6omgk1VdmS4W3Uq4sr4hE8llSYKe7GXsTxTPdZTdlyLQA4xrKQOit+Ryv7nwfFATbY5mERHQAAAABJRU5ErkJg
这是一个在IE8中工作的示例:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFMAAABTCAAAAADG2WTcAAAACXBIWXMAACZzAAAmcwHzbHUKAAAAEnRFWHRTb2Z0d2FyZQBCYXJjb2RlNEryjnYuAAABAklEQVR42u2ZwQ7AIAhD+f+f3nbwMGwBl3hYg1xM5ngmUBE3u/abCTHtMTZcS4N3O0z3dNiYg+eeickZ02LMVzRcPJ0DD77zPsw5CQv6BGaYIwkmxo6+/V7S2CKHGShvYaNDmngN+T0TfGk9Y/E0DL4YkxVsWCQsSGGOOjPhHaNVfM5W2YMpMCFu2A3QQyHb722ZkQAT+dLzVJEJvqz4hYqc1H2Y4XHgU0WPCmzFxJhMjrTO00K3uDd7MXm8SSdKc1fej/7LLGTK+8yvPW0jZrGZ15sQXWbUGCTXOXIoiDGLLx3RUN1lOjOzCp5MkzZUmlkIM9JnGs9ezF2mxuz8r2e33b2PHKlEJ4PKAAAAAElFTkSuQmCC
这是一个小提琴.JS小提琴在IE8中效果不佳,所以使用此链接直接查看结果.
如果你对这个问题的原因有所了解请分享:)
我有一个简单的案例,我有一个连接商店的网格.
有2个按钮.一个带有修改所选记录的处理程序.一个具有提交所选记录的处理程序.
当我选择一个记录并按下编辑 - >编辑发生选择(看起来丢失)如果你打电话,grid.geSelectionModel().getSelection()
你会看到记录仍然被选中.它只是没有这样显示.
您无法再次选择它,首先必须选择另一条记录,然后选择记录.
其次,当您选择一个记录时,单击提交按钮,该值将被提交,但选择"再次显示"为丢失.
这是一个错误吗?我怎样才能解决这个问题?我想让它保持选择可见!
这是示例代码:(我使用Ext 4.1.1)
var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
fields: ['name', 'email', 'phone'],
data: {
'items': [{
'name': 'Lisa',
"email": "lisa@simpsons.com",
"phone": "555-111-1224"
}, {
'name': 'Bart',
"email": "bart@simpsons.com",
"phone": "555-222-1234"
}, {
'name': 'Homer',
"email": "home@simpsons.com",
"phone": "555-222-1244"
}, {
'name': 'Marge',
"email": "marge@simpsons.com",
"phone": "555-222-1254"
}]
},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
Ext.create('Ext.container.Container', { …
Run Code Online (Sandbox Code Playgroud) 我有一个项目清单.单击列标题时,列将进行排序,列标题中将显示排序箭头图标.但是,即使在过滤记录之后,该列也会保留排序和排序箭头图标(通过在过滤器文本字段中输入文本并按"过滤器"按钮).我希望每次过滤记录时都会从列中删除排序和排序箭头图标.我发现了一些关于在网格重新加载时清除排序箭头图标的帖子(请参阅下面的链接).但是我怎样才能将这个应用到我的情况中呢?任何提示将非常感激.
http://www.sencha.com/forum/showthread.php?48437-Help-How-to-remove-sort-field-when-reload-grid
http://www.sencha.com/forum/showthread.php?3098-Clear-grid-s-sort-arrow-icon
我喜欢使用任务发送邮件.这是我的代码来调用SendMail方法:
Task.Factory.StartNew(() => SendMail(toTextBox.Text,
subjectTextbox.Text,
BodyEditor.ContentHtml,
filenames.ToArray(),
ccTextBox.Text,
bccTextBox.Text));
Run Code Online (Sandbox Code Playgroud)
问题是:我不能像这样传递UI信息(文本框等),因为对象归另一个线程所有.
错误消息:调用线程无法访问此对象,因为另一个线程拥有它.
我该如何将这些参数传递给我的动作?
我有一个带有上传字段的ExtJs表单.当我对表单进行求和时,Accept-header是错误的.响应是JSON,但发送的Accept-header是:
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Run Code Online (Sandbox Code Playgroud)
我有根据的猜测是它是浏览器的默认值.
在Chrome中,会出现警告:资源被解释为Document但是使用MIME类型application/json进行传输.
在FireFox中,这会导致文件下载.
结论:我必须将Accept-header更改/设置为 application/json
Sencha的文档 sais它有一个headers
参数,但我已经测试过,对于fileupload它不起作用.评论称它不受支持.(在另一个线程中找到相同的结果)
任何摆脱文件下载/设置正确的Accept-header的建议......它不一定是ExtJs sollution.如果你能给我一个简单的javaScript解决方案来设置文件上传表单上的accept头,我可以把它塑造成一个sencha框架.
更新:
ExtJS表单提交:
form.submit({
url: API_URLS.addDocument,
waitMsg: 'Uploading your document...',
headers: {
"Accept": 'application/json' //doesn't work
},
success: function() {
...
},
failure: function(){
...
}
});
Run Code Online (Sandbox Code Playgroud)
在幕后它创建了一个类似于此的普通形式:
<form action="API_URLS.addDocument" enctype="multipart/form-data" method="post">
<input type="file"/>
</form>
Run Code Online (Sandbox Code Playgroud)
哪个可以通过javaScript(submit()
)提交
我想在jquery mobile中创建一个带有一些输入字段的弹出窗口(页面对话框).我如何将数据从弹出窗口传递到我的主页面?
弹出窗口是否需要是一个完整的jquery ui页面(页面解剖),或者只是一个
<div data-role="page">
...
</div>
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我正在尝试使用转换器类基于DatePicker中的Date在ComboBox中标记Names.
我目前的问题是我不知道如何将DatePicker的日期绑定到"ConverterParameter".有什么建议?
(我的代码中可能有更多错误,但此时我已经陷入困境)
<Page.Resources>
<Style TargetType="ComboBoxItem" x:Key="combostyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBoxItem">
<ControlTemplate.Resources>
<src:ColorFromMagazijnierIdConverter x:Key="conv" />
</ControlTemplate.Resources>
<Grid ToolTip="{Binding Converter={StaticResource conv}, ConverterParameter={ BIND THIS TO THE DATEPICKER DATE }, Mode=OneWay}">
<Rectangle x:Name="MarkedItemBackground" IsHitTestVisible="False" Fill="#80FF0000" />
<!--...-->
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Converter={StaticResource conv}}"
Value="{x:Null}">
<Setter TargetName="MarkedItemBackground"
Property="Visibility" Value="Hidden" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<Grid Margin="10,10,10,0" Name="rootGrid">
<ComboBox Name="collectMagazijnierComboBox"
DisplayMemberPath="User.Name"
ItemContainerStyle="{DynamicResource ResourceKey=combostyle}"/>
<DatePicker Name="collectDatePicker" />
</Grid>
Run Code Online (Sandbox Code Playgroud) 可能重复:
JavaScript的数学是否被破坏?
我遇到了这个四舍五入的问题:
当我这样做:
.2 + .1 results in 0.30000000000000004
.7 + .1 results in 0.7999999999999999
1.1 + .1 results in 1.2000000000000002
Run Code Online (Sandbox Code Playgroud)
等等...
谁能解释(详细)为什么?可能是一些二进制舍入的东西.但我真的想知道会发生什么......
javascript ×5
extjs ×4
c# ×2
.net ×1
ajax ×1
apache ×1
columnheader ×1
converter ×1
cross-domain ×1
data-uri ×1
data-url ×1
datepicker ×1
extjs4 ×1
file-upload ×1
filelist ×1
html5 ×1
http-headers ×1
jquery ×1
moodle ×1
sencha-touch ×1
sorting ×1
wpf ×1