我正在编写一个脚本,该脚本将简单的命令发布到嵌入在设备上的 Web 服务器。我不确定服务器到底是什么(我相信嵌入式 Linux 上的某种 Apache 风格),这对于我的要求无关紧要。
$.ajax()
服务器上的代码对 jQuery函数发送的 URL 和 Chrome 发送的完全相同的 URL 的反应不同。我试图找到一种方法来弄清楚 Chrome 对这个请求做了什么,jQuery 不是为了让我的 javascript 工作。
细节:
当我发布到设备以向其发送命令时,我会这样做:
$.ajax({
type: "GET",
url: urlPrefix+'/setsetting/'+name+'='+value,
success: function(r) {
//command was sent
},
error: function(e) {
//some http error
}
});
当我发出一个值不包含空格的请求时,服务器会正常工作。但是,当我发出一个值包含空格的请求时,服务器不会完成它的工作。因此,服务器上的代码如何处理 URL 中的空格显然存在问题,对吧?奇怪的是:当我将使用此代码构建的 URL 直接放入浏览器窗口时,即使值中有空格,服务器也会执行其工作。所以这个 URL 从我的脚本发送:
http://[ip]/setsetting/setting1=value 1
不起作用,但如果我将相同的网址插入我的浏览器(Chrome),它确实有效。Chrome 会将空格更改为%20
. 我尝试格式化代码中的值以替换无用的空格%20
。我尝试将 contentType 属性添加$.ajax()
到其他事物中,但这些都没有帮助。
编辑:我刚刚注意到 $.ajax() 的错误函数正在触发。e.responseText 是一个显示“400 - 错误请求”的 html 页面。嗯?