未捕获的SyntaxError:parseJSON方法javascript中意外的输入结束

时间:2015-11-30 09:51:02

标签: javascript jquery json

在使用javascript的网页中,我使用

将数据传递到隐藏的输入字段
$("#waypt_sel").val(JSON.stringify(itins.arr_intin));

然后使用

访问该数据
waypts_input = $.parseJSON($("#waypt_sel").val())

这有效,除了有时它给出了

  

未捕获的SyntaxError:意外的输入结束

。我用json解析跟踪了这一行的错误。但我感到困惑,因为这有时会起作用,但有时它并不适用于同一个相同的字符串。

我检查了传递给html输入的值,它可以工作,但不适用于相同的值。 这是我传递的json字符串的一个例子:

"[{\"location\":\"8.3353156, 80.3329846\",\"stopover\":true}, {\"location\":\"8.0326424, 80.7446666\",\"stopover\":true}, {\"location\":\"7.9577778, 80.667518\",\"stopover\":true}, {\"location\":\"7.953208, 81.006675\",\"stopover\":true}, {\"location\":\"7.885949, 80.651479\",\"stopover\":true},{\"location\":\"7.2905425, 80.5986581\",\"stopover\":true},{\"location\":\"7.300322, 80.386362\",\"stopover\":true}]"

这是我使用的代码的结构。

$(document).ready(function() {


    $.ajax({
        url: "aa.php",
        type: "POST",
        data: {
            id: selected_i
        },
        success: function(result) {

            itins = $.parseJSON(result);
            $("#waypt_sel").val(JSON.stringify(itins.arr_intin));
        }
    });


    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "dd.php",

        success: function(result) {
            locations = $.parseJSON(result);
            initializeMap();

        }
    });


    function initializeMap() {
    //other code
        calculateAndDisplayRoute();
//other code


        function calculateAndDisplayRoute() {
            //other code
            waypts_input = $.parseJSON($("#waypt_sel").val());
            waypts_json_input = $.parseJSON(waypts_input);
            //other code
            }

    }


});

以下是我在firefox开发人员版浏览器上收到的详细错误消息。

  

SyntaxError:JSON.parse:第1行第1列的意外数据结尾   JSON数据

     

calculateAndDisplayRoute()map.js:366

     

initializeMap()map.js:290

     

.success()map.js:62

     

m.Callbacks / j()jquery-1.11.3.min.js:2

     

m.Callbacks / k.fireWith()jquery-1.11.3.min.js:2

     

x()jquery-1.11.3.min.js:5

     

.send / b()jquery-1.11.3.min.js:5

提前致谢。

2 个答案:

答案 0 :(得分:0)

" \"在javascript中反序列化json字符串时是不必要的。

您使用的json工具是什么?

你在一个工具中序列化,并与其他工具反序列化,可能会得到这个场景。

答案 1 :(得分:0)

问题是我使用异步ajax请求来检索json数据。当数据被检索并粘贴到html时,使用html数据的代码的执行发生了,因此给出了错误。我为ajax查询使用了一个回调函数,这就完成了这项工作。

function get_det(callback) {//Your asynchronous request.  
    $.ajax({
      url: "aa.php",
      type: "POST",
      success: function (result) {
        alert("1st call");
        callback();//invoke when get response 
      }
    });
  }

并在调用它的代码中:

get_det(secondFunction);//calling with callback function
function secondFunction()//your callback function
{
 alert("2nd Call");
}

或者,您也可以在ajax查询参数中尝试async: false。但这可能导致浏览器冻结,不建议使用。