Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 如何使用.load jQuery获取响应_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript 如何使用.load jQuery获取响应

Javascript 如何使用.load jQuery获取响应,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我正在使用jQuery中的.load函数,用ajax将html页面加载到div中,但我遇到了问题,因为服务器总是不发送html,有时它发送json,我想用获得json 我原以为在.load中的回调函数中会有响应,但它返回未定义的,只是将json放入div中,那么如何使用.load获得json 服务器发送此json: {ok : false} 以下是我的jQuery代码: $( "#div").load( "url", function( response, status, xhr ) {

我正在使用jQuery中的
.load
函数,用ajax将html页面加载到div中,但我遇到了问题,因为服务器总是不发送html,有时它发送
json
,我想用
获得
json

我原以为在
.load
中的回调函数中会有
响应
,但它返回未定义的,只是将
json
放入div中,那么如何使用
.load
获得
json

服务器发送此json:

{ok : false}
以下是我的jQuery代码:

$( "#div").load( "url", function( response, status, xhr ) {
    ////how can I get the false result here response.ok return nothing!!!
    console.log(response.ok);
    if ( status == "error" ) {
        var msg = "Sorry but there was an error: ";
        $( "#div" ).html( msg + xhr.status + " " + xhr.statusText );
    }
});

我认为你必须这样做:

$("#div").load( "url", function( response, status, xhr ) {
    var responseAsObject = $.parseJSON(response);
    console.log(responseAsObject.ok);
});
使用响应替换#div html内容:

$("#div").load("url", function (responseTxt, statusTxt, xhr) {
    if (statusTxt == "success") {
        var responseAsObject = $.parseJSON(response);
        $(this).html( responseAsObject.response );
    }
    if (statusTxt == "error") 
        alert("Error: " + xhr.status + ": " + xhr.statusText);
});

如果您只想要JSON,为什么要使用
.load()
而不是
.get()
?因为正如我所提到的,服务器有时会发送html和.load函数,但在某些情况下它会返回一个josn,我想使用该JSON。load为什么不使用
.get()呢
然后可以检查返回数据类型,如果服务器返回HTML,则可以将其放入DOM中(如
.load()
可以),但如果它返回JSON,则已经有JSON响应。这似乎有点奇怪,您正在发出请求,但不知道服务器将返回什么-通常情况并非如此。@jfriend00我知道服务器的响应是什么,我只想在这里设置一个条件,我只想知道是否有任何方法可以使用.load(而不是.get)同时获取html和json这是我的第一个问题,答案很简单。不,或者是。如果是,怎么回答。你要回答我的问题吗?
。load()
并不是从服务器获取JSON的工具。这是做这项工作的错误工具。我的建议是在工作中使用正确的工具,而不是尝试破解错误的工具。这对我来说非常有用。xhr的第三个参数是秘密酱汁。在我的例子中,我从我的动作方法返回一个任务。我只是将其改为Task,并返回了一个BadRequest(消息),它将变成xhr.status 400。其他一切照常进行。