【问题标题】:strange behaviour with json object coming from ajax call in safari/webkit来自 safari/webkit 中 ajax 调用的 json 对象的奇怪行为
【发布时间】:2023-03-10 20:27:01
【问题描述】:

我正在使用 jquery 对 Web 服务进行 AJAX POST 调用,并返回一个 JSON 对象,这给了我一些我想附加到 div 的 html 代码,它在 firefox 中运行良好,但问题是是不是 safari 不做附加,这里是例子:

$.ajax({
    type: "POST",
    url: "ConnMgr.asmx/Request",
    data: JSON.stringify(objectToSend),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response){
        $('#myDiv').empty();
        $("#myDiv").append(response.d.htmlSnippet); //this doesn't work on safari but it does on FF
        //$("#myDiv").append("<img src=\"image.png"/>")//this works in all browsers
        //alert(response.d);//this works in all browsers
    }
});

似乎在 safari 中,jquery 不喜欢使用 json 对象作为 append() 的参数的想法 我之前尝试过创建变量的副本,插入延迟,在传递之前将变量转换为字符串,但结果是一样的。

非常感谢

【问题讨论】:

  • 是否产生任何错误?
  • 也许如果您可以发布“d.htmlSnippet”的示例值,我们可能会在您的 sn-p 中发现一些不工作的东西。如果您的 JSON 响应的此属性确实是格式良好的 HTML 字符串,那么您尝试执行的操作应该没有任何问题......如果您实际上是显式转换为字符串,并且仍然有附加问题它,问题出在字符串本身。祝你好运!

标签: javascript jquery ajax json safari


【解决方案1】:

你试过 response.d.htmlSnippet.ToString()

【讨论】:

    【解决方案2】:

    你的意思是像 http://jsbin.com/elapa/ 这样的东西在 safari 中不适合你?

    【讨论】:

      【解决方案3】:

      是的,我确实尝试过使用 response.d.htmlSnippet.ToString() 并没有帮助

      最后我通过编写 htmlsn-p 然后从即将到来的 JSON 对象中只取一个数字来解决这个问题,这样就可以了 safari调试控制台没有报错

      【讨论】:

        【解决方案4】:

        不要吹毛求疵,但这个块不一样

        success: function(response) {
            $('#myDiv').empty();
        
        
            //this doesn't work on safari but it does on FF
            //$("#myDiv").append("<img src=\"image.png"/>")//this works in all browsers
            //alert(response.d);//this works in all browsers
            $("#myDiv").append(response.d.htmlSnippet);
        }
        

        因为你可以在 jQuery 中链接方法调用,所以作为这个块?

        success: function(response) {
            $('#myDiv').html(response.d.htmlSnippet);
        }
        



        1. 你能尝试做这样的事情吗?

          $('#myDiv').html( '' + response.d.htmlSnippet );
          

          我不知道它是否有效......但值得一试。

        2. 我认为您的代码 response.d.htmlSnippet.ToString() 可能不起作用。
          它应该是一个小写的"toString()"

        【讨论】:

          【解决方案5】:

          我曾经发现 FF 和其他人在 JSON 实现方面存在差异 - 其他人不允许传递奇怪的字符。您将不得不使用实体。 尝试确定返回的内容 - 将整个响应对象拖放到类似 firebug 的控制台并查看内容。提醒它可能还不够。

          【讨论】:

            猜你喜欢
            • 2013-04-28
            • 1970-01-01
            • 1970-01-01
            • 2012-06-16
            • 2016-11-03
            • 2012-11-02
            • 1970-01-01
            • 2020-02-10
            • 2014-01-22
            相关资源
            最近更新 更多