$ .getJSON:JSON数据的第1行第1列的意外数据结尾

时间:2016-03-01 18:56:15

标签: javascript jquery json ajax

在更改下拉列表中的项目时,我应该通过jQuery进行AJAX调用。 (我正在使用新功能 getJSON ,它会自动将数据类型设置为' JSON',所以我不必指定它。)

我的代码:

<script language="javascript">
$(document).ready(function () {

    $('#mydropdown').change (function() {
        var lookupPath = "/" + $(location).attr('pathname').split('/')[1] + "/lookup";
        var jsonData = '{\"lookupIdentifier\":\"MY_LOOKUP\",\"secondParam\":\"PARAM\"}';
        alert('JSON Data is: ' + jsonData);

        var jqxhr = $.getJSON(lookupPath, jsonData).done(function(data) {
            alert('AJAX Call Completed. Data: ' + JSON.stringify(data));    
        }).fail(function(d, textStatus, error) {
            alert('Failed: ' + d + " textStatus: " + textStatus + " error: " + error);
        });

首先,我验证传入的JSON字符串是否正确,没有语法问题:

{"lookupIdentifier":"MY_LOOKUP","secondParam":"PARAM"}

进入失败(),错误:

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

不要自己编码任何数据。 jQuery会这样做,你不需要干涉。

将数据作为对象传递:

$(function () {
    $('#mydropdown').change(function () {
        $.getJSON("/" + location.pathname.split('/')[1] + "/lookup", {
            lookupIdentifier: "MY_LOOKUP",
            secondParam: "PARAM"
        }).done(function(data) {
            console.log('AJAX Call Completed. Data: ', data);
        }).fail(function(jqXhr, textStatus, error) {
            console.log('Failed', jqXhr, textStatus, error);
        });
    });
});

不相关,但请使用console.log()代替alert()