【问题标题】:Why does AJAX not call the success: function in iOS Safari but works fine every other browser?为什么 AJAX 不调用成功:iOS Safari 中的功能但在其他所有浏览器中都可以正常工作?
【发布时间】:2019-04-06 01:04:18
【问题描述】:

我有一个 AJAX 代码,它可以在所有浏览器上正常运行,但不能在 iOS safari 上运行。在 iOS Safari 上,它不会调用 success: 函数,而是直接调用 error: 函数。为什么会这样。

关于进一步探索数据:iOS safari 上的 cartData 是 quantity=1&id=<a href="tel:33217807108">33217807108</a> 而不仅仅是 quantity=1&id=33217807108

代码如下:

  $.ajax({

    type: 'POST',
    url: '/cart/add.js',
    data: cartData,
    dataType: 'json',
    cache: false,
    headers: { "cache-control": "no-cache" },

    success: function(cartData){

      if(product == 1){
        if(cartCounter == (noItems - 1)){
          // console.log('update');
          updateCart();
        }else{
          // console.log('add to cart');
          cartCounter++;
          cartAdd(productType,1);

        }
      }else{

        // console.log('update 2')
        updateCart();

      }
    },
    error: function(response){
        alert(response);        
    }
  });

}

【问题讨论】:

  • 错误信息是什么?
  • iOS 会自动获取类似于电话号码的数字字符串并将其格式化。看起来这是相关的:stackoverflow.com/questions/226131/…
  • 如何在“数据:cartData”上实现这个?

标签: javascript php jquery node.js ajax


【解决方案1】:

尝试将其添加到您的标题中:

<meta name="format-detection" content="telephone=no">

【讨论】:

  • 不起作用。不确定这将如何处理数据:cartData
  • 解决此类问题的常见方法是在号码上附加额外数据,使其看起来不像电话号码。因此,您可以尝试将其设置为 ID=3321A7807A108,然后删除 add.js 中的“A”或类似的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 2017-12-26
  • 2011-08-14
  • 1970-01-01
  • 2012-02-02
相关资源
最近更新 更多