2012-10-29 54 views
1

我是新來的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+'&param2='+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>&nbsp;</p> 
    <input type="submit" value="Start Generator" id="generator" name="generator" /> 
</form> 
<div id="imgdisplay" class="imgdisplay"></div> 

是什麼原因造成這種奇怪的行爲?我該如何解決它?

+0

請發表你回到你的'$ .getJSON的JSON的樣本()'調用。我很好奇數據是什麼。 –

回答

2

嘗試從匿名點擊方法

$('#generator').click(function(){ 
    .... 
    return false; 
} 

返回false這將確保點擊不會發表您的形式

+0

是的,現在它工作。非常非常感謝你。 – Tribun