javascript
  • jquery
  • json
  • 2016-05-30 21 views 0 likes 
    0

    獲取JSON錯誤,同時呼籲獲取JSON錯誤,同時調用多個功能

    Error - Uncaught SyntaxError: Unexpected token ' in JSON at position 0

    我打電話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); 
         } 
        }); 
    } 
    
    +2

    刪除' 「」「''左右JSON.stringify()'。單引號在JSON字符串中無效。 - 儘管如此,沒有必要在之後立即將stringify()僅用於parse()。你可以傳遞'Object'本身作爲參數。 –

    +0

    你似乎認爲只有字符串可以作爲參數傳遞給函數。通過'data'和你的回調函數,不需要將它們轉換爲字符串並在被調用者中解析。 –

    +0

    此外,JavaScript中的函數可以像任何其他值一樣使用和傳遞。因此,'FUNCTION'可以是一個[實際的'函數'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function) - 'Post_Function(...,function (html){$(「#div2」)。html(html);})' - 稍後用'FUNCTION(html);'或甚至'success:FUNCTION'調用,而不需要'eval()'。 –

    回答

    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 */ 
    
        .... 
    } 
    
    0

    您正在試圖調用JSON.parse上的繩子,看起來像這樣:這是沒有很好地形成JSON

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

    應該刪除外部引號。試試這個代碼:

    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); 
         } 
        }); 
    } 
    
    0

    「 ' 」+ JSON.stringify(datajson)+「'」; - 刪除引號

    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?

    +0

    我正在閱讀有關eval()我有很多點不使用此功能,但我有一個問題,什麼函數可以在eval()的位置使用? – User97798

    +0

    我編輯了我的答案,看看函數cb(response){..} –

    相關問題