客户端使用jquery ajax提交post请求,如下所示:
$.ajax({
url: "/xxx?request1",
data: theParams,
type: 'post',
error: function(XMLHttpRequest, textStatus, errorThrown){
// error handling
},
success: function(data){
var theResult = JSON.parse(data);
// success handling
}
});
Run Code Online (Sandbox Code Playgroud)
Apache配置为将请求传递/xxx?给自定义应用程序.应用程序处理请求并返回信息.通常,此信息以JSoN形式返回,并使用jquery/javascript显示在"成功处理"部分中.在编写JSON之前,应用程序会编写以下标头(然后通过apache返回):
HTTP/1.0 200 OK
Connection: close
Server: MyServer v. 0.826
Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)
我也有饼干工作,在200 OK线之后放置以下内容:
Set-Cookie: cookie_name=value; Domain=example.com; Path=/; Expires=Fri, 21-Mar-2014 01:40:22 GMT; HttpOnly
Run Code Online (Sandbox Code Playgroud)
在一种情况下,我希望用户能够保存返回的数据(作为纯文本文件).但这是我遇到问题的地方.
如果我使用JavaScript打开一个窗口并将数据写入新窗口,我发现Safari和Chrome都禁用了"另存为..."菜单选项(在Mac上).
(我有一个使用base64 URI工作的版本,但相对于网站的其他部分,它看起来没有抛光.)
然后我开始尝试包含Content-Disposition: attachment; filename=file.txt
标题,但我永远不会让浏览器产生提示.我尝试将此标题放在200 OK行之后,以及之后:
Content-Type: text/plain
Content-Disposition: attachment; filename=file.txt
Run Code Online (Sandbox Code Playgroud)
除了不确定Content-Disposition标题的确切格式之外,我还不确定我是否有Content-Type正确的或者ajax处理程序代码中有什么东西阻止了保存.
我试图找到将所有东西放在一起的例子,但是只能找到零件而且我无法正确地将它放在一起.有什么建议?
我的目标只是现代浏览器,三个主要平台(Mac/Windows/Linux),客户端只有HTML5/JavaScript.
我有一个标准的 HTML5 类型的客户端/服务器设置。服务器端全是Java,客户端是JavaScript。使用 ajax 我发送查询并接收回复。到目前为止,我没有遇到任何问题JSON.parse(data)。但是,我有一个新用户使用汉字输入了她的姓氏。这会导致客户端出现“JSON.parse: bad control character in string literal”错误。
服务器按如下方式构建回复(省略异常处理):
JSONObject jsono = new JSONObject();
jsono.put("last_name", last_name);
jsono.put("first-name", first_name);
String response = jsono.toString();
Run Code Online (Sandbox Code Playgroud)
客户端收到类似的东西:
{"last_name":"Smith","first_name":"Bob"}
Run Code Online (Sandbox Code Playgroud)
回复显示在设置为的网页上 <meta charset="utf-8">:
var theResult = JSON.parse(data);
$('#first_name').html(theResult.first_name);
Run Code Online (Sandbox Code Playgroud)
这工作得很好。但是,对于中国用户,客户端收到
{"last_name":"?","first_name":"Bob"}
Run Code Online (Sandbox Code Playgroud)
这会导致 json.parse 错误。
我现在开始研究其他角色。比如Andrés不会引起错误,也不会正常显示。看起来像Andr?s。
所以,我显然错过了一些东西。有人能告诉我问题出在哪里(例如,它是服务器端?客户端?JavaScript?jquery?html?)以及如何解决它?
我遇到了file.isFile()返回false(表示文件不是“正常”)的情况。但是,我找不到“正常”的定义。该文档链接到Oracle状态:
如果文件不是目录,并且满足其他与系统有关的条件,则该文件是正常的。
该文件归所有者所有_www:staff并具有许可权-rw-r--r--。该目录也归所有者拥有_www:staff并具有权限drwxrw-r--。正在访问文件的进程由拥有bob:staff。系统是MacOS 10.9。该过程可以读取,加载和显示文件。唯一的问题是对isFile()的调用返回false,这意味着Java认为它不是普通文件。
因此,回到更大的问题,即使文件确实存在,路径正确并且可以访问文件,在什么情况下此调用将返回false?
我正在尝试实现网络音频 API。该代码适用于 Chrome 29.0.1547.76,但不适用于 Safari 6.0.5 (8536.30.1)。关键是我使用 noteOn(0) 还是 start(0)。
我想使用 start() 以便我可以播放声音的一部分:
asource.start(0, 2, 1);
Run Code Online (Sandbox Code Playgroud)
在 Chrome 中工作正常(立即播放,从 2 秒标记开始,播放 1 秒),但结果是
TypeError: 'undefined' is not a function (evaluating 'asource.start(0, 2, 1)')
Run Code Online (Sandbox Code Playgroud)
在 Safari 上。将这一行替换为
asource.noteOn(0);
Run Code Online (Sandbox Code Playgroud)
作品。[好吧,我需要调用 noteOff(0) 而不是 stop(0)。] 我在 start(0) 中遇到了同样的错误。那么,我假设 Safari 没有实现 start(0) ?但如果是这样,为什么HTML5 Rocks中使用 start(0) 的一些示例可以工作?
作为参考,这里是完整的网页。我尝试过许多不同的声音/格式;都会导致相同的错误。
<!DOCTYPE html>
<html lang=en>
<head>
<meta charset="utf-8">
<title>Web Audio API Issue</title>
</head>
<body>
<p>Example working on Chrome but not Safari when using start()</p>
<button id="Load" onclick="init()" …Run Code Online (Sandbox Code Playgroud)