2013-01-06 59 views
3

即時通訊這有一個Ajax函數,其中我動態地填充數據庫元素列表。他們每一個作爲顯示圖片和名稱。它有一個隱藏字段,其變量通過POST被另一個頁面捕獲,並顯示圖像和一些信息。動態生成的表單不能正常工作

問題是,有時隱藏字段中的ID參數似乎不會被髮送。表單被髮送,但它似乎沒有捕獲隱藏的變量,顯示一個隨機圖像和信息,而不是最初點擊的那個。

這裏是我的代碼:

function absurdSearch(textoBuscar){ 
    $.ajax({ 
     type : "POST", 
     url  : "service.php", 
     dataType: "json", 
     data : { 
      action:"absurdSearch", 
      absurdText: textoBuscar 
     }, 
     success:function(data){ 
      $("#testDiv").empty(); 
      var i; 
      for (i = 0; i < data.data.length; ++i) { 

       console.log(data); 
       var divCreator =''; 
       var str='projectsearch' + i; 

       data.data[i].projectCategory 

       var ProjectTypeIdName = data.data[i].projectCategory; 
       switch (ProjectTypeIdName) { 
        case "1": 
         var urlFormSend='proyectos_arq.php'; 
         var projectTypeName ='Proyectos <br/>Arquitectónicos'; 
         break; 
        case "6": 
         var urlFormSend='proyectos_urb.php'; 
         var projectTypeName ='Proyectos <br/>Urbanos'; 
         break; 
        case "7": 
         var urlFormSend='arquit_pai.php'; 
         var projectTypeName ='Arquitectura del <br/>Paisaje'; 
         break; 
        case "8": 
         var urlFormSend='arquit_int.php'; 
         var projectTypeName ='Arquitectura de <br/>Interiores'; 
         break; 
        case "10": 
         var urlFormSend='arquit_trans.php'; 
         var projectTypeName ='Arquitectura del <br/>Transporte'; 
         break; 
       } 

       divCreator+='<div id="grupo'+i+' class="typeface-js" style="font-family:GreyscaleBasic"">'; 
       divCreator+='<div class="tipo-pro">'; 
       divCreator+='<div id="tipo_arq" class="tipo">'+projectTypeName+'</div>'; 
       divCreator+='<div id="tipo_arq_abajo" class="abajo"></div>'; 
       divCreator+='</div>'; 
       divCreator+='<div>'; 
       divCreator+='<div id="tipo_'+i+'"></div>'; 
       divCreator+='<div id="tipo_arq_abajo'+i+'"></div>'; 
       divCreator+='</div>'; 
       divCreator+='<div id="fotoproyectos'+i+'" ><img src="' + data.data[i].path + '" height="128" width="160"></div>'; 
       divCreator+='<div id="nombreproyectos'+i+'" ><form method="post" name="projectsearch'+i+'" id="projectsearch'+ i +'" action="'+urlFormSend+'">'; 
       divCreator+='<span style="cursor: pointer;" onclick="document.getElementById(\'projectsearch'+i+'\').submit()">"'+ data.data[i].projectName +'"</span>' 
       divCreator+='<input name="project_id" type="hidden" id="project_id" value="' + data.data[i].projectId + '">'; 
       divCreator+='</form></div>'; 
       divCreator+='</div>'; 
       divCreator+='</div><br><br>'; 

       $("#testDiv").append(divCreator); 

      }; 
     } 
    }) 
}; 

這裏是真正抓住了POST變量的代碼。

<?php 
require('server/php/methods.php'); 
$main = new main(); 
$project_id = $_POST['project_id']; 
if (empty($project_id)) { 
    list($name, $description, $path, $_images, $next_project_id, $previous_project_id = $main->projectRandom(7); 
    $images = json_encode($_images); 
} 
else { 
    list($name, $description, $path, $_images, $next_project_id, $previous_project_id) = $main->projectNumber(7, $project_id); 
    $images = json_encode($_images); 
} 

當我檢查螢火蟲一切似乎沒問題,每個隱藏的字段都有參數(project_id)分配。但有時它確實有效,有時它不起作用。

螢火蟲:

Firebug

任何幫助將不勝感激

+0

*提示:*在你的腳本中,不要一次做兩件事情,更好地檢查請求的輸入是預期的操作。這將允許你從隨機移動到不同的行動。在這裏,你一次做兩件事,當變量爲空時,你選擇一個隨機圖像,這看起來像是你描述的一個錯誤,但它是編程功能。 – hakre

+1

我也建議讓PHP端構建實際的HTML。在php文件(或帶有嵌入式php的html文件)中閱讀和編輯html比在javascript中閱讀和編輯要容易得多。生成複雜的元素(比如有很多孩子的表單)注入dom會導致比它導致成功更多的錯誤。 – 2013-01-06 19:22:46

+0

是的,但實際上隨機功能是需要的,因爲客戶希望每次頁面加載時都會收取隨機圖像/項目。對不起,gdoron,我如何接受答案? –

回答