在ajax驱动的站点中,我使用ajaxSetup添加了一些默认数据,ala:
var revision = '159';
$.ajaxSetup({
dataType: "text json",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
data: {
r: revision
}
});
Run Code Online (Sandbox Code Playgroud)
这是为了确保在部署新修订时前端缓存未命中,并且前端从后端请求html模板或json数据.由于这个原因,后端和前端共享相同的修订号.
问题是后端在前端执行PUT,POST或DELETE时获取参数'r'有点不高兴.有没有办法告诉jQuery的ajax这个数据只应该在执行GET请求时使用,而不是在执行POST,PUT或DELETE请求时使用.
更新:
我首先尝试了beforeSend函数,因为我知道它.但是,更改settings.data是可能的,但是当beforeSend返回时,任何更改似乎都会消失.这可能是我的错...... :-)
我已经选择了ajaxPreFilter.虽然这并不容易.options.data不是一个对象,而是$ .param(object)的结果,所以第一个挑战是取消参数化它.我最终得到了这个:
var revision = '159';
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
// do not send data for POST/PUT/DELETE
if (originalOptions.type !== 'GET' || options.type !== 'GET') {
return;
}
var data = originalOptions.data;
if (originalOptions.data !== undefined) {
if (Object.prototype.toString.call(originalOptions.data) === '[object String]') {
data = $.deparam(originalOptions.data); // see http://benalman.com/code/projects/jquery-bbq/examples/deparam/
}
} else {
data = {}; …Run Code Online (Sandbox Code Playgroud) 我聚集了一个专用的podspec来专门在5.1.5版中构建Lua,并对Lua进行了许多补充。
下面的podspec应该对应于我们的“手动组合”代码,并为Lua提供openssl,socket和zlib支持。
{
"name": "Lua51",
"version": "5.1.5",
"summary": "The lua language (for embedding).",
"homepage": "https://github.com/qmx/lua",
"license": {
"type": "MIT"
},
"authors": {
"The Lua team": "team@lua.org"
},
"source": {
"http": "http://www.lua.org/ftp/lua-5.1.5.tar.gz",
"sha1": "b3882111ad02ecc6b972f8c1241647905cb2e3fc"
},
"platforms": {
"ios": "4.0",
"osx": "10.6"
},
"public_header_files": "src/*.h",
"source_files": "src/*.{c,h}",
"exclude_files": [
"src/lua.c",
"src/luac.c"
],
"requires_arc": false,
"subspecs": [
{
"name": "Socket",
"license": {
"file": "LICENSE"
},
"authors": {
"Bruno Silvestre": ""
},
"source": {
"git": "https://github.com/brunoos/luasocket.git",
"commit": "5edf093643cceb329392aec9606ab3988579b821"
},
"source_files": "src/*.*"
},
{
"name": …Run Code Online (Sandbox Code Playgroud) 如何使我的应用程序的 WebView 中的文件上传行为与浏览器应用程序中的行为相同?
我正在尝试在我的 Android 应用程序中创建一个 WebView,允许上传用相机拍摄的多张图像。
当我在浏览器应用程序中打开下面的 HTML 代码时,我可以附加多张图片。当我的应用程序的 WebView 中有相同的代码时,该按钮甚至不会打开对话框。
<form method="post" action="/save/images" name="send" id="send" enctype="multipart/form-data">
<input type="file" name="data[]" id="camera" multiple="">
<input type="submit" name="send">
</form>
Run Code Online (Sandbox Code Playgroud)
如果您想尝试一下,这里有一个指向上述 HTML 的链接:http://codereaper.com/bugspray/so/25251993/html-sendimages/
这里的要点是 Android 应用程序本身与此无关,加载的 URL 包含一个在 Android 浏览器应用程序中运行的网页,您可以在其中使用相机上传一堆图像。
我尝试的当前状态包括向应用程序授予权限:
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>
Run Code Online (Sandbox Code Playgroud)
创建 WebView 时允许 JavaScript 和 FileAcess:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report);
WebView webView = (WebView) findViewById(R.id.report_webview);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setAllowFileAccess(true);
showProgressDialog(R.string.please_wait_title, R.string.please_wait_description);
webView.setWebViewClient(new WebViewClient() { …Run Code Online (Sandbox Code Playgroud) 我试图强制执行一个简单的类型,但该类型Int不能与其他Ints 混淆。
假设您有以下类型别名:
typealias EnemyId = Int
typealias WeaponId = Int
Run Code Online (Sandbox Code Playgroud)
我希望以下发生编译器错误:
var enemy: EnemyId = EnemyId("1")
enemy = WeaponId("1") // this should fail
Run Code Online (Sandbox Code Playgroud)
我要失败的行应该失败,因为这两种类型(EnemyId和WeaponId)是不同的类型。
实现这一目标的最好,最干净的方法是什么?
更新
在查看了答案和评论之后,我想添加使用枚举想出的东西:
enum Enemy {
case id(Int)
var id: Int {
switch self {
case .id(let i):
return i
}
}
}
let enemy = Enemy.id(1)
print("enemy: \(enemy.id)")
Run Code Online (Sandbox Code Playgroud)
当前Mattt的答案要短得多,更符合您对Swift的期望。
更新#2
我尚无法使用Swift 4.1,因此必须执行以下操作:
struct EnemyId : Hashable {
private let value: Int
init(_ value: Int) {
self.value = value
}
init?(_ …Run Code Online (Sandbox Code Playgroud)