Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 来自safari/webkit中ajax调用的json对象的奇怪行为_Javascript_Jquery_Ajax_Json_Safari - Fatal编程技术网

Javascript 来自safari/webkit中ajax调用的json对象的奇怪行为

Javascript 来自safari/webkit中ajax调用的json对象的奇怪行为,javascript,jquery,ajax,json,safari,Javascript,Jquery,Ajax,Json,Safari,我使用jquery对web服务进行AJAX POST调用,并获取一个JSON对象,这会返回一些html代码,我想将其附加到div中,它在firefox中运行良好,但问题是safari不进行附加,下面是一个示例: $.ajax({ type: "POST", url: "ConnMgr.asmx/Request", data: JSON.stringify(objectToSend), contentType: "application/json; charset=

我使用jquery对web服务进行AJAX POST调用,并获取一个JSON对象,这会返回一些html代码,我想将其附加到div中,它在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
    }
});
$.ajax({
类型:“POST”,
url:“ConnMgr.asmx/Request”,
数据:JSON.stringify(objectToSend),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
$('#myDiv').empty();
$(“#myDiv”).append(response.d.htmlSnippet);//这在safari上不起作用,但在FF上起作用
//$(“#myDiv”).append(“”//此选项适用于所有浏览器
//警报(response.d);//这在所有浏览器中都有效
}
});
在safari中,jquery似乎不喜欢使用json对象作为append()的参数 我以前尝试过创建变量的副本,插入延迟,在传递变量之前将变量转换为字符串,但结果是一样的


非常感谢

您是否尝试过response.d.htmlSnippet.ToString()

您的意思是这样的东西在safari中对您不起作用?

是的,我尝试过使用response.d.htmlSnippet.ToString(),但没有任何帮助

最后,我做了一个变通方法,编写了htmlsnippet,然后只从即将到来的JSON对象中获取一个数字,这样就可以了
safari调试控制台没有报告任何错误,不必吹毛求疵,但此块与

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);
}


  • 你能试试这样做吗?

    $('#myDiv').html( '' + response.d.htmlSnippet );
    
    我不知道它是否有效……但值得一试

  • 我认为您的代码response.d.htmlSnippet。ToString()可能无法工作。
    它应该是一个小写的“toString()”

  • FF和我曾经发现的其他人在JSON实现上存在差异——其他人不允许传递奇怪的字符。您必须使用实体。
    尝试确定返回的内容-将整个响应对象放到类似firebug的控制台上,然后查看内容。发出警报可能还不够。

    是否产生了任何错误?如果您可以发布“d.htmlSnippet”的示例值,我们可能会在您的代码片段中发现一些不起作用的内容。如果JSON响应的这个属性真的是一个格式良好的HTML字符串,那么您应该不会有任何问题。。。如果您实际上正在显式转换为字符串,但在追加字符串时仍然存在问题,那么问题就出在字符串本身。祝你好运
    $('#myDiv').html( '' + response.d.htmlSnippet );