好的,所以我一直在努力避免使用大多数HTTP协议的属性,或者为了害怕未知,你怎么可能请它们调用它们.但是我告诉自己,我今天将面临恐惧并开始有目的地使用标题.我一直试图在这里实现的是将json数据发送到浏览器并立即使用它.例如,如果我在就绪状态4上有一个ajax处理函数,看起来像这样
function ajaxHandler(response){
alert(response.text);
}
Run Code Online (Sandbox Code Playgroud)
我在我的php中设置了内容类型标题
header('Content-Type: application/json');
echo json_encode(array('text' => 'omrele'));
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么我不能直接从处理函数访问属性,当浏览器被明确告知传入的数据是application/json?
我有一个风格元素
position: relative;
transition: all 2s ease 0s;
Run Code Online (Sandbox Code Playgroud)
然后我想在点击它之后平滑地改变它的位置,但是当我添加样式改变时,转换不会发生,而是元素立即移动.
$$('.omre')[0].on('click',function(){
$$(this).style({top:'200px'});
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改color属性,它会顺利更改.
$$('.omre')[0].on('click',function(){
$$(this).style({color:'red'});
});
Run Code Online (Sandbox Code Playgroud)
可能是什么原因造成的?是否存在不属于"过渡性"的属性?
编辑:我想我应该提到这不是jQuery,它是另一个库.代码似乎按预期工作,样式正在添加,但转换仅适用于第二种情况?
由于我用javascript的时髦"对象模型"处理过去,我认为没有析构函数这样的东西.我的搜索有点不成功,所以你们是我最后的希望.如何在实例销毁时执行内容?
如果登录用户导航到要使用WebSockets的站点的某个区域,我如何获取该会话ID以便我可以在服务器上识别他?
我的服务器基本上是一个无休止的while循环,它保存有关所有连接用户和东西的信息,所以为了获取该id,我认为唯一合适的时刻是握手,但不幸的是握手的请求头不包含cookie数据:
请求标题
接受:text/html,application/xhtml + xml,application/xml; q = 0.9,/ ; q = 0.8
Accept-Encoding:gzip,deflate Accept-Language:en-US,en; q = 0.5
Cache-Control:no -cache
连接:keep-alive,升级
DNT:1
主机:192.168.1.2 :9300
原产地:http://localhost
Pragma:no-cache
Sec-WebSocket-Key:5C7zarsxeh1kdcAIdjQezg ==
Sec-WebSocket-Version:13
升级:websocket
用户代理:Mozilla /5.0(Windows NT 6.1; WOW64; rv:27.0)Gecko/20100101 Firefox/27.0
那么我怎么能真正抓住那个id呢?我以为我可以以某种方式强制javascript发送cookie数据以及该请求,但2014年任何自尊的网站将有httpOnly会话cookie,以便不会解决.任何帮助是极大的赞赏!
这是我正在使用的服务器文件的下载链接http://www.4shared.com/rar/7RIos1tuce/PHPWebSocket-Chat-master.html
我有一个非常标准的设置,一个带页面的路由器
import React from "react";
import ReactDOM from "react-dom";
import { IndexRoute, Router, Route, Link, hashHistory as history } from "react-router";
import Layout from "./pages/Layout";
...
import User from "./pages/User";
ReactDOM.render(
<Router history={history}>
<Route path="/" component={Layout}>
<IndexRoute component={...}/>
<Route path="project/create" component={...}/>
<Route path="project/:id" component={...}/>
<Route path="user/:id" component={User}/>
<Route path="*" component={...}/>
</Route>
</Router>,
document.getElementById("app-root"));
Run Code Online (Sandbox Code Playgroud)
除非我去一个页面像一切都可以正常使用site.tld/#/user/5的User组件有一些麻烦正确实例.所有其他页面都在工作,我还有另一个页面使用url参数(project/:id),它也正常工作.
import React from "react";
...
export default class User extends React.Component {
constructor() {
super();
console.log(this);
...
}
render() { …Run Code Online (Sandbox Code Playgroud) 我似乎找不到这个问题的答案..如何在javascript中将URL参数字符串转换为JSON?我的意思是问是否有像这样的内置功能或单线程可以完成这项工作?
例:
some=params&over=here => {"some":"params","over":"here"}
我正在构建一个数据库对象,它将PDO对象与PDOStatement对象连接起来,以便链接可用.基本上我只是把我经常使用的方法,但bindParam给我一个艰难的时间.
private $stmt = null;
...
public function prepare($statement,array $driver_options = array()) {
if($this->stmt) throw new \Exception('PDO Statement already prepared, no override!');
$this->stmt = parent::prepare($statement, $driver_options);
return $this;
}
public function bindParam($place, &$val, $dataType){
if(!$this->stmt) throw new \Exception('PDO Statement is empty');
$this->stmt->bindParam($place, $val, $dataType);
return $this;
}
public function execute(array $params = array()){
if(!$this->stmt) throw new \Exception('PDO Statement is empty');
$this->stmt->execute($params);
return $this;
}
public function fetchAll($pdoFetchType){
if(!$this->stmt) throw new \Exception('PDO Statement is empty'); …Run Code Online (Sandbox Code Playgroud) 最近我开始在firefox'控制台中看到这个
Object [ <6 empty slots>, false, <3 empty slots>, 1 more… ]
Run Code Online (Sandbox Code Playgroud)
当我有一个像这样的对象
{
6: false,
10: true
}
Run Code Online (Sandbox Code Playgroud)
我只想要一个带有数字键的对象,我可以访问,但我很担心这个,因为如果它跟踪空槽,那么这必然意味着浪费了一些内存?
我的关注是否有效,如果是,那么定义这样一个对象的正确方法是什么?
我在我的项目中添加了这段代码
if (navigator.mediaDevices === undefined) {
navigator.mediaDevices = {};
}
if (navigator.mediaDevices.getUserMedia === undefined) {
navigator.mediaDevices.getUserMedia = function (constraints) {
var getUserMedia = (
navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia
);
if (!getUserMedia) {
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
}
return new Promise(function (resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject);
});
};
}
Run Code Online (Sandbox Code Playgroud)
然后我正在尝试使用的视频流 getUserMedia
navigator.mediaDevices.getUserMedia({
video: true,
audio: false
}).then(stream => {
// do stuff
}).catch(error => {
console.log(error.name + " " + error.message);
});
Run Code Online (Sandbox Code Playgroud)
当我在我的模拟器中测试它时,它适用于Android版本5及更高版本,但是当我在实际设备上运行时,我收到此错误 …
我有一个使用websockets的工作聊天应用程序.我想更进一步,并在我的连接上启用加密,但是当我用https打开http服务器时,我的连接开始失败.
我已经生成了一个我在所有网站上使用的自签名证书(在相同的TLD下,这意味着它是一个通配符证书).我可以确认它是一个有效的证书,所以问题不应该存在.
这是有效的(未加密)
var webSocketServer = require('websocket').server;
var http = require('http');
var server = http.createServer(function() {});
server.listen(webSocketsServerPort, function () {
log("system", "Server is listening on port " + webSocketsServerPort);
});
var wsServer = new webSocketServer({
httpServer: server
});
Run Code Online (Sandbox Code Playgroud)
使用这个我现在可以连接到ws://my.domain:port.
这是什么不工作
var webSocketServer = require('websocket').server;
var http = require('https');
var fs = require('fs');
var server = http.createServer({
key: fs.readFileSync("path/to/host.key"),
cert: fs.readFileSync("path/to/host.pem")
});
server.listen(webSocketsServerPort, function () {
log("system", "Server is listening on port " + webSocketsServerPort);
});
var …Run Code Online (Sandbox Code Playgroud) javascript ×6
php ×3
http ×2
json ×2
websocket ×2
cordova ×1
css ×1
destructor ×1
getusermedia ×1
node.js ×1
pdo ×1
reactjs ×1
session ×1
ssl ×1
transition ×1
url ×1