我希望我的回复是在JSON对象中。但在某些函数中,它来自字符串,我想解析它。我怎样才能做到这一点?这是我的功能。
/flask2/video_feed
这是我的responseText
function serverRequest(requestDATA, successCallback, errorCallback, hideIndicator, showAlert){
var METHOD = "POST";
var serverURL = 'http://istudy.com.pk/api/server.php'; //Path to Server.php
//var serverURL = 'http://localhost/istudy/server.php'; //Path to Server.php
var DATA_TYPE = 'json';
var TIMEOUT = 20000;
console.log(requestDATA);
$$.ajax({
url: serverURL,
data: requestDATA,
dataType: DATA_TYPE,
type: METHOD,
timeout: TIMEOUT,
success: function(data){
successCallback(data, hideIndicator, showAlert);
},
error: function(a, b, c){
errorCallback(a, b, c, hideIndicator, showAlert);
}
});
}
这是我的PHP功能
responseText: "{"status":"success","message":"Your Order has Processed. Please Note this pin <b style=\"background-color:green;\">osIyKvAp<\/b> and send it to the admin with payment details."}"
当且仅当我的回复是字符串时,我可以对JSON.parse进行任何检查吗?
答案 0 :(得分:2)
在成功处理程序中添加此内容。
data = typeof data === 'string' ? data : JSON.parse(data);
答案 1 :(得分:0)
您可以使用相当简单的javascript来执行此操作:
if (typeof(data) == 'string') {
data = JSON.parse(data);
}
如果您对为什么感到好奇,它可能无法自动解析您的JSON,这里有几个常见原因:
application/json
内容类型(在dataType参数中设置。答案 2 :(得分:0)
&#34;当且仅当我的回复是字符串时,我可以对JSON.parse进行任何检查吗?&#34; 是的你可以。
if (typeof (response) != 'object'){
response = JSON.parse(response);
}
答案 3 :(得分:0)
删除DATA_TYPE = 'json';
,然后重试:
function serverRequest(requestDATA, successCallback, errorCallback, hideIndicator, showAlert){
var METHOD = "POST";
var serverURL = 'http://istudy.com.pk/api/server.php'; //Path to Server.php
//var serverURL = 'http://localhost/istudy/server.php'; //Path to Server.php
var TIMEOUT = 20000;
console.log(requestDATA);
$$.ajax({
url: serverURL,
data: requestDATA,
type: METHOD,
timeout: TIMEOUT,
success: function(data){
try {
if(typeof(data)==='string') data=JSON.parse(data);
} catch(ex) { // bad json response
console.error(ex);
}
successCallback(data, hideIndicator, showAlert);
},
error: function(a, b, c){
errorCallback(a, b, c, hideIndicator, showAlert);
}
});
}
请注意。这不会避免这个问题,但是让我们解析响应,同时从服务器得到可能的错误响应,即Content-Type
不是application/json
。某些Web服务器将同时接受Content-Type:text/plain
和Content-Type:application/json;
标头,而在两种情况下都返回{$ 1}}而不是{$ 1}} $ .ajax解析(当找到{{1}时}作为json formatted string
标题值)。
要实现这一点,请务必在json object
代码中打印出正确的标题
application/json