2017-03-03 145 views
1

我有這樣的代碼,我不知道什麼是錯的

$(document).ready(function() { 
 
    $.ajax({ 
 
    type: 'GET', 
 
    url: 'data.json', 
 
    dataType: 'json', 
 
    success: jsonParser 
 
    }); 
 
}); 
 

 
$(".btn_val1").click(function() { 
 
    function jsonParser(json) { 
 
    $.getJSON('data.json', function(data) { 
 
     $.each(data.dt.ld, function(k, v) { 
 
     var title = v.titleContent; 
 
     var img = v.image; 
 
     var txt = v.textContent; 
 
     $('.information_g').append('<p>' + txt + '</p>'); 
 
     }); 
 
    }); 
 
    } 
 
});

我運行該腳本,我得到這個錯誤後,我不知道是什麼問題:

Uncaught ReferenceError: jsonParser is not defined

+0

jsonParser被點擊處理程序中作用域? –

回答

4

問題是因爲您僅在.btn_val1點擊處理程序的範圍內定義jsonParser()函數。它需要在您撥打$.ajax的範圍內。

另請注意,你的邏輯有點奇怪。您正在對data.json進行AJAX調用,然後在該請求的success的處理程序中再次進行相同的調用。我建議您從jsonParser()中刪除$.getJSON()來電。試試這個:

function jsonParser(data) { 
    $.each(data.dt.ld, function(k, v) { 
    var title = v.titleContent; 
    var img = v.image; 
    var txt = v.textContent; 
    $('.information_g').append('<p>' + txt + '</p>');  
    }); 
} 

$(document).ready(function() { 
    $.ajax({ 
    type: 'GET', 
    url: 'data.json', 
    dataType: 'json', 
    success: jsonParser 
    }); 
}); 

$(".btn_val1").click(function() { 
    // do something when this button is clicked... 
}); 
1

jsonParser裏面$(".btn_val1").click所以這是一個點擊後才能訪問。所以,你需要將它移出點擊處理程序的範圍。

function jsonParser(json) { 
    $.getJSON('data.json', function(data) { 
     $.each(data.dt.ld, function(k, v) { 
     var title = v.titleContent; 
     var img = v.image; 
     var txt = v.textContent; 
     $('.information_g').append('<p>' + txt + '</p>'); 
     }); 
    }); 
    } 
0

您嘗試在定義它之前傳遞函數。試試這個:

function jsonParser(data) { 
 
    $.each(data.dt.ld, function(k, v) { 
 
    var title = v.titleContent; 
 
    var img = v.image; 
 
    var txt = v.textContent; 
 
    $('.information_g').append('<p>' + txt + '</p>'); 
 
    }); 
 
} 
 

 
$(document).ready(function() { 
 
    $.ajax({ 
 
    type: 'GET', 
 
    url: 'data.json', 
 
    dataType: 'json', 
 
    success: jsonParser 
 
    }); 
 
}); 
 

 
$(".btn_val1").click(function() { 
 
    // should it also call ajax request? 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

相關問題