【问题标题】:Js angular bug only on Safari仅在 Safari 上的 Js 角度错误
【发布时间】:2015-07-29 00:40:07
【问题描述】:

我有以下代码:

$http.post(constants.path+'address.php', {form}).then(function(data){
                console.log(data);
                console.log("success");
            });
        }

仅在 Safari 上出现以下错误:

'SyntaxError: Unexpected token '}'. Expected a ':' following the property name 'form'. 

其他所有浏览器都不会抱怨此代码。有什么想法吗?

编辑1:整个功能是:

function enviaVaga(form){
    console.log(form);
    return $http.post(constants.path+'json.php', {form}).then(function(data){
        console.log(data);
        console.log("sucesso");
    });
}

这是一个将数据发送到我的后端的服务功能

EDIT2:仅供将来参考,删除 {} 造成了我的后端期望在 $formData 上接收 form 对象的问题,为了解决这个问题,我使用 {form: form},它在 Safari 上运行良好。

【问题讨论】:

  • 这不是有效的 javascript。
  • 哪一部分?因为没有其他浏览器抱怨这个代码
  • 你能打印constants.path的值吗?您可能需要在 /address.php 上添加一个斜杠,而且您似乎正在使用 Promise,那是 http.post 吗?
  • constants.path 是 '../../../'。
  • 您的表单上可能不需要 {},因为表单已经是一个对象。

标签: javascript angularjs safari


【解决方案1】:

你没有传递任何对data 有效的东西。 Safari 正在尝试将 {form} 解释为一个新对象。

其他浏览器可能更亲切,但只需删除 {}

实际上,其他浏览器可能会将 {form} 解释为 safari 不支持的对象短符号。见:https://kangax.github.io/compat-table/es6/#object_literal_extensions

【讨论】:

  • 是的,这就是问题所在。奇怪的是只有 Safari 会抱怨这一点。严格模式是否有助于在其他浏览器上发现这一点?
  • 没有。严格模式解决了一组不同的问题。你可以通过 jshint 运行它。
  • @BrunoHenrique 那是因为它处于最前沿。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 2014-12-22
相关资源
最近更新 更多