我正在尝试创建一个在ajax成功回调之前调用的全局处理程序.我用我的应用程序做了很多ajax调用,如果是一个错误我返回一个特定的结构,所以我需要在成功运行之前运行一些东西来检查响应数据,看它是否包含错误代码,如1/0
样品回复
{"code": "0", "message": "your code is broken"}
Run Code Online (Sandbox Code Playgroud)
要么
{"code": "1", "data": "return some data"}
Run Code Online (Sandbox Code Playgroud)
我无法在开箱即用的jQuery中找到一种方法,查看prefilters,ajaxSetup和其他可用的方法,但是它们并没有完全解决它,我能想出的赌注是攻击ajax方法本身一点点:
var oFn = $.ajax;
$.ajax = function(options, a, b, c)
{
if(options.success)
{
var oFn2 = options.success;
options.success = function(response)
{
//check the response code and do some processing
ajaxPostProcess(response);
//if no error run the success function otherwise don't bother
if(response.code > 0) oFn2(response);
}
}
oFn(options, a, b, c);
};
Run Code Online (Sandbox Code Playgroud)
我已经使用了一段时间它工作正常,但想知道是否有更好的方法来做到这一点,或者我在jQuery文档中遗漏的东西.
刚开始使用 Node.js,在看到几个例子后,我发现通常Content-Type在返回一些内容之前设置。
对于 HTML,通常是这样的:
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(html);
res.end();
Run Code Online (Sandbox Code Playgroud)
对于图像:
res.writeHead(200, {'Content-Type': 'image/png'});
res.write(img, 'binary');
res.end();
Run Code Online (Sandbox Code Playgroud)
我阅读了.write()的文档,它说如果没有指定标题“它将切换到隐式标题模式并刷新隐式标题”
通过一些测试,我发现我可以像这样写一行:
res.end(html); // or
res.end(img);
Run Code Online (Sandbox Code Playgroud)
这两个工作正常。我还使用本地 Apache 服务器进行了测试,当我查看加载图像时设置的标头时,那里没有Content-Type设置标头。
我需要麻烦设置它们吗?如果我不这样做,可能会出现什么情况或错误?
我正在尝试避免在进行mongodb查询时使用回调.我正在使用mongoskin来打电话:
req.db.collection('users').find().toArray(function (err, doc) {
res.json(doc);
});
Run Code Online (Sandbox Code Playgroud)
在许多情况下,我需要进行多个查询,所以我想使用Node.js promise库,但我不知道如何将这些函数包装为promises.我看到的大多数例子对于像readFile我这样的事情都是微不足道的,我猜在这种情况下我需要以某种方式包装到Array?可以这样做,还是必须由mongoskin实现?
一个例子可以是任何一组回调,查找/插入,查找/查找/插入,查找/更新:
req.db.collection('users').find().toArray(function (err, doc) {
if (doc) {
req.db.collection('users').find().toArray(function (err, doc) {
// etc...
});
}
else {
// err
}
});
Run Code Online (Sandbox Code Playgroud) 如果关系还没有订单,我正试图去默认订单.但如果确实如此,我不使用默认值.
$q = $this->items();
if (empty($q->orders)) {
$q = $q->order();
}
Run Code Online (Sandbox Code Playgroud)
请注意,这order()只是一个BaseModel类中的默认方法.出于某种原因,当我尝试orders在查询构建器上调用该属性时,它表示Undefined property即使它是类中的公共属性Builder.
不知道为什么,或者我如何检查这个.
编辑:
我在路线中设置了一个完整的例子:
class Test extends \Illuminate\Database\Eloquent\Model {}
$router->get('/test', function () {
$test = new Test;
$q = $test->select('id')->orderBy('id', 'desc');
$bindings = $q->getRawBindings();
var_dump($bindings);
return 'test';
});
Run Code Online (Sandbox Code Playgroud)
转储只是吐出查询构建器对象而不是绑定?
我正在尝试在 Lumen 中使用隐式路由模型绑定,但似乎不起作用。
反正有没有启用这个?
$app->get('/users/{user}', 'UsersController@get');
Run Code Online (Sandbox Code Playgroud)
它只是返回值,user但不是类型提示它并返回模型。
我正在尝试在Vue.js中创建一个简单的插件来包装vue-resource插件以跟踪请求的状态.
function State() {}
State.prototype.post = function (ctx, name, url, data, successCB, errorCB) {
var options = {};
if (errorCB) {
options.error = function (resp) {
ctx[name] = 'error';
return errorCB(resp);
};
}
ctx[name] = 'sending';
ctx.$http.post(url, data, function (res, code, req) {
ctx[name] = 'sent';
return successCB(res, code, req);
}, options);
};
function install(Vue) {
Object.defineProperties(Vue.prototype, {
$state: {
get: function () {
return new State;
// return Vue.state.bind({$vm: this});
}
}
});
}
module.exports = install; …Run Code Online (Sandbox Code Playgroud) 我不敢相信我必须问这个问题,但我们开始了。
如何使用 Webpack 4 缩小文件?
似乎默认喜欢添加所有这些垃圾。
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
...
Run Code Online (Sandbox Code Playgroud)
我只想要一个文件输入和一个缩小的文件输出。绝对没有添加额外的垃圾。 …
我正在使用节点的 Sequelize 包。我有一个典型的包括人与多关系。
Item.findAll({
include: {model: Blah: as 'blahs'}
});
Run Code Online (Sandbox Code Playgroud)
一切正常,但它返回带有每个子项目的枢轴数据的集合。我不需要它。有什么方法可以禁用它或指定所需的数据透视字段吗?
我有一个这样的规则:
Rule::exists('tokens', 'key')
->where(function ($q) {
$q->where('state', 'unused');
})
Run Code Online (Sandbox Code Playgroud)
但是我正在尝试访问实际的 Token 模型范围,所以我可以只做->unused()而不是重复我的查询。
Rule::exists(\App\Models\Token::class, 'key')
->where(function ($q) {
$q->unused();
})
Run Code Online (Sandbox Code Playgroud)
它似乎获得了一个查询构建器,但不是来自Token模型。
我已经尝试了一些变体,将Token模型作为参数而不是tokens表名传入,但它只会为call to undefined method.
有没有办法做到这一点?
尝试设置 webpack 来构建我的.js和.vue文件。
似乎没有将_name() {}样式函数转换为常规 JavaScript。
认为它应该开箱即用,除非另有说明,否则直接进入 commons js。
不知道为什么,它只在 IE 中崩溃,并出现一些关于分号不合适的通用 JS 语法错误。
我想一些小旗子,设置,某事,某处。
在这里寻找一些建议。
过时
<script>
export default {
computed: {
_name() {
return 'blah';
}
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
包.json
"@babel/core": "7.0.0-beta.42",
"@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.42",
"@babel/preset-env": "7.0.0-beta.42",
"babel-loader": "8.0.0-beta.2",
"vue-loader": "9.5.1",
"vue-style-loader": "1.0.0",
"sass-loader": "3.2.3",
"node-sass": "^4.1.1",
"css-loader": "0.25.0",
"style-loader": "0.13.1",
"vue-html-loader": "1.2.3",
"file-loader": "^0.8.4",
"webpack": "3.4.1",
"webpack-dev-server": "1.16.1",
"webpack-stream": "3.2.0",
"copy-webpack-plugin": "3.0.1",
"replace-webpack-plugin": "0.1.2",
"uglifyjs-webpack-plugin": "1.2.7"
Run Code Online (Sandbox Code Playgroud)
配置
entry: [__dirname + '/../src/bootstrap.js'],
output: …Run Code Online (Sandbox Code Playgroud) javascript ×5
laravel ×3
node.js ×3
php ×3
laravel-5 ×2
vue.js ×2
ajax ×1
babel-loader ×1
babeljs ×1
content-type ×1
eloquent ×1
express ×1
http-headers ×1
jquery ×1
lumen ×1
mongodb ×1
mongoskin ×1
promise ×1
sequelize.js ×1
vue-resource ×1
webpack ×1
webpack-4 ×1