我是新來的JavaScript。對於一個jQuery的Ajax-PHP-合作的代碼做奇怪的事情。它有效 - 有時候。jQuery的JSON循環使用Ajax調用的PHP函數
這就是我想做的事:
- 的形式進行一些設置(作品)
- 讀取JSON文件按提交按鈕(作品)
- 環的JSON-後項目,提取每個項目的值,並形成一個參數字符串(問題是在這裏:循環不是在按鈕按下功能(總是)執行)從每個項目值構建
- 發送參數字符串PHP-文件(如果輸入循環,則工作)
- 接收來自PHP文件(HTML標籤)(作品)
- 更新與響應值的表單元素的響應(尚未實施,實際上顯示與調試目的PHP響應警報)
JSON文件是有效的(測試)。 的HTML頁是有效的HTML5(測試)。 的PHP腳本工作,並返回一個有效的HTML的圖像標籤(測試)。
當我按下按鈕時,爲了進行調試而實現的警報中沒有顯示來自PHP文件的響應。但這個工程:
- 重新加載頁面
- 打開Firebug在
- 設置斷點環路開始
- 向前跳一個聲明
- 進入循環重新加載頁面,一切工作正常
我可以關閉Firebug並且循環執行正確。
的JavaScript代碼
<script type="text/javascript">
$(document).ready(function() {
//click event of submit button
$('#generator').click(function(){
// GET variables
var datafile = "my.json";
var logo = false;
// if checkbox is checked
if($('#logo').attr('checked')){
logo = true;
};
// read data from json file
$.getJSON(datafile,function(data){
//iterate through the data-sets
for(var i=0; i < data.length; i++) {
// get the response from server for each data-set
$.ajax({
type: 'POST',
async: false,
cache:false,
url: 'myfile.php',
data: 'param1='+data[i].field1+'¶m2='+data[i].field2+'&logo='+logo,
success: function(response){
//$('#imgdisplay').html(response);
// alert only for debugging purposes
alert(response);}
}); // end of ajax-call
}; // end of for-loop
} ); // end of getJSON
}); // end of button.click
}); // end of document.ready
</script>
(對不起,壞intented格式)
我用一個for循環,不能得到每() - 環的正常工作。
這是形式:
<form name="settings">
<label>Source file</label>
<select id="datasource" name="datasource">
<option value="extract">Extract</option>
<option value="filter">Filter</option>
</select><br />
<label>Logo</label>
<input type="checkbox" id="logo" name="logo" value="ON"/><br />
<p> </p>
<input type="submit" value="Start Generator" id="generator" name="generator" />
</form>
<div id="imgdisplay" class="imgdisplay"></div>
是什麼原因造成這種奇怪的行爲?我該如何解決它?
請發表你回到你的'$ .getJSON的JSON的樣本()'調用。我很好奇數據是什麼。 –