我刚刚编写了一个脚本来以json格式从PHP文件中获取结果,但在使用JSON.parse甚至jQuery解析它之后,该对象为空且未定义!请注意,PHP返回json字符串并正常工作。以下是样本结果:
{"status":"success","data":{"link":"http://example.com/file.pdf","size":"1 MB"}}
or
{"status":"failure","data":{"error":"some error occured!"}}
以下是我的代码示例:
<script>
jQuery(document).ready(function (){
jQuery('#form').submit(function(event){
jQuery('#loading').show();
var formData = {
id : jQuery('#id').val()
};
jQuery.ajax({
type: 'POST',
url: 'script.php',
data : formData,
datatype: 'json',
cache: false
})
.done(function(response){
jQuery('#loading').hide();
var obj = JSON && JSON.parse(response) || jQuery.parseJSON(response);
alert(obj.result); // here says undefined and also the below if/else doesn't work
if(obj.status == 'success'){
jQuery('#result').html('<span style="color: green;">' + obj.data.link + '</span>');
}
else if(obj.status == 'failure'){
jQuery('#result').html('<span style="color: red;">' + obj.data.error + '</span>');
}
});
event.preventDefault();
});
});
</script>
<div>
<form action="script.php" method="POST" id="form">
<p>
<label for="id">ID:</label>
<input type="text" name="id" id="id">
</p>
<p>
<button type="submit">submit</button>
</p>
</form>
</div>
<div id="loading" style="display: none;"><img src="loading.gif" alt="loading..."></div>
<div id="result"></div>
我以前将jQuery v1.10.x附加到该文件中。
答案 0 :(得分:3)
即使你拼错了dataType
属性,jQuery也会猜测响应类型并为你解析它。我没有理由致电JSON.parse()
(或jQuery.parseJSON
)。