调用多个函数时出现JSON错误

时间:2016-05-30 22:08:41

标签: javascript jquery json

调用多个函数时出现JSON错误

  

错误 - 未捕获的SyntaxError:位于0的JSON中的意外标记

我在jquery中调用多个函数,但是它给出了错误我已经尝试了很多方法,但是错误得到了改变,但它无法正常工作。

HTML

<div id="div1">
    <input type="submit"onclick='Function1()'>
    <input type="text" value="Text1" id="input1">
    <input type="text" value="Text2" id="input2">
</div>

<div id='div2'></div>

的jQuery

function Function1(){
    var input1 =  $("#input1").val();
    var input2 =  $("#input2").val();
    var datajson = { "input1" : input1, "input2" : input2 };
    var data = "'"+JSON.stringify(datajson)+"'";
    Post_Funtion('testpost.php',data,'$("#div2").html(html);')
}

function Post_Funtion(URl,DATA,FUNCTION){

    var url = encodeURIComponent(URl);
    var data = JSON.parse(DATA);

    $.ajax({
        type: "POST",
        url: url,
        data: data,
        cache: false,
        success: function(html) {
            eval(FUNCTION);
        }
    });
}

3 个答案:

答案 0 :(得分:0)

您正在尝试错误地JSON.stringify()发布数据,然后转身并将其解析回传递给ajax选项。

这整个步骤是不必要的。按原样传递对象,jQuery将从那里处理它

function Function1(){
    var input1 =  $("#input1").val();
    var input2 =  $("#input2").val();
    var data = { "input1" : input1, "input2" : input2 };   
    Post_Funtion('testpost.php',data,'$("#div2").html(html);')
}


function Post_Funtion(URl,DATA,FUNCTION){    
    var url = encodeURIComponent(URl);       

    $.ajax({
       data: DATA,
       /* other options the same */

    ....
}

答案 1 :(得分:0)

您正试图在类似这样的字符串上调用JSON.parse

'{"input1": input1, "input2": input2}'

这不是格式良好的JSON。 应删除外部引号。请尝试以下代码:

function Function1(){
    var input1 =  $("#input1").val();
    var input2 =  $("#input2").val();
    var datajson = { "input1" : input1, "input2" : input2 };
    var data = JSON.stringify(datajson) // Removed quotes from JSON
    Post_Funtion('testpost.php',data,'$("#div2").html(html);')
}

function Post_Funtion(URl,DATA,FUNCTION){

    var url = encodeURIComponent(URl);
    var data = JSON.parse(DATA);

    $.ajax({
        type: "POST",
        url: url,
        data: data,
        cache: false,
        success: function(html) {
            eval(FUNCTION);
        }
    });
}

答案 2 :(得分:0)

&#34;&#39;&#34 + JSON.stringify(datajson)+&#34;&#39;&#34 ;; - 删除引号

var data = JSON.stringify(datajson);

在这种情况下,无法查看字符串化和解析对象的原因。请尝试以下方法:

function Function1(){
var input1 =  $("#input1").val();
var input2 =  $("#input2").val();
var data = { "input1" : input1, "input2" : input2 };

function cb(response){
  $("#div2").html(response);
}

Post_Funtion('testpost.php',data, cb)
}

function Post_Funtion(URl,DATA,FUNCTION){

var url = encodeURIComponent(URl);

console.log(DATA);

$.ajax({
    type: "POST",
    url: url,
    data: DATA,
    cache: false,
    success: FUNCTION
});
}

PS不要使用eval,Why is using the JavaScript eval function a bad idea?