小提琴:http://jsfiddle.net/wy4wd/19/
我正在解析一个json对象,但它正在落入到其他地方,导致html为Error
时它应该是ID not found
而我无法找出原因。
如果success
为1
,则效果正常。
JSON由帖子请求返回,但出于问题目的,我在本地声明它。
$(document).ready(function() {
var data = '{"success": "0","patient_cid": "0"}';
var response = jQuery.parseJSON(data);
if (response.success == 0) {
if (response.patient_cid == 0) {
$('#resultpanel').html('<p>ID not found</p>');
}
if (response.patient_ambassador == 0) {
$('#resultpanel').html('<p>ID found but not an ambassador</p>');
}
if (response.soap_error == '1') {
$('#resultpanel').html('<p>SOAP error</p>').fadeIn('slow');
}
}
if (response.success == 1){
$('#resultpanel').html('<p>success</p>').fadeIn('slow');
}
else {
$('#resultpanel').html('<p>Error</p>').fadeIn('slow');
}
});
答案 0 :(得分:2)
应该是
//... previous code here
else if (response.success == 1){
//... the rest of the code here
如果我理解正确的话。
否则将执行第一个错误解析,但替换为最后一个else语句中的代码。
答案 1 :(得分:1)
它与解析JSON无关,它是if
语句中导致这种情况的逻辑。
实际上,该面板实际上设置为“ID not found”,但之后将其替换为“Error”。
首先将else
放在您处理success == 0
的位置,然后使用else if
创建一系列条件:
if (response.success == 0) {
if (response.patient_cid == 0) {
$('#resultpanel').html('<p>ID not found</p>');
}
else if (response.patient_ambassador == 0) {
$('#resultpanel').html('<p>ID found but not an ambassador</p>');
}
else if (response.soap_error == '1') {
$('#resultpanel').html('<p>SOAP error</p>').fadeIn('slow');
}
else {
$('#resultpanel').html('<p>Error</p>').fadeIn('slow');
}
}
if (response.success == 1){
$('#resultpanel').html('<p>success</p>').fadeIn('slow');
}
答案 2 :(得分:1)
您将值设置为您想要的值,然后通过此行重置为Error
$('#resultpanel').html('<p>Error</p>').fadeIn('slow');
您应该了解javascript中的错误和真实y如何工作: 我会做这样的事情:
$(document).ready(function() {
var data = '{"success": "0","patient_cid": "0"}',
response = jQuery.parseJSON(data),
message;
if (response.success == '1') {
message = 'success';
}
else {
if (response.patient_cid == '0') {
message = 'ID not found';
}
else if (response.patient_ambassador == '0') {
message = 'ID found but not an ambassador';
}
else if (response.soap_error == '1') {
message = 'SOAP error';
}
else {
message = 'Error';
}
}
$('#resultpanel').html('<p>' + message + '</p>').fadeIn('slow');
});