JSON.parse对象未定义的JavaScript警报

时间:2015-02-15 16:32:54

标签: javascript jquery

我刚刚编写了一个脚本来以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附加到该文件中。

1 个答案:

答案 0 :(得分:3)

即使你拼错了dataType属性,jQuery也会猜测响应类型并为你解析它。我没有理由致电JSON.parse()(或jQuery.parseJSON)。