2013-12-09 120 views
1

我有一個編碼對象,其中包含通過ajax調用發送到某個php文件的圖層數組myfile.php。 php文件只是解碼這個對象,並將圖層名稱推入數據庫。現在我想在當前推送到數據庫的前端顯示layerName。在php中執行echo命令

我的Ajax請求如下:

$.ajax(
{ 
    type: 'POST', 
    url: "funcs.php", 
    data: 
    { 
    targetAction : 'getProjectAssetId', 
    MetaData: allFiles, 
    }, 
    success: function(data) 
    { 
    console.log("data: "+data); 
    }, 
//dataType: "json" 
}); 

Funcs.php編碼對象處理如下:

if(isset($_POST['MetaData'])) 
{ 

    $project= explode("ProjectTag",$_POST['MetaData']); 
    echo "\nProject: ".$project[0]."\n"; 

    $projectName=explode("Bounds: ",$project[0]); 
    $projectBounds=$projectName[1]; 
    $projectName=explode("ProjectName:",$projectName[0]); 
    $projectName=$projectName[1]; 
    echo "ProjectName: ".($projectName)."\n"."ProjectBounds: ".$projectBounds."\n"; 
    $bound=json_decode($projectBounds,true); 
    // Hard coded groupID and no reference ID 
    $projectId= getProjectAssetId($projectName,25,'',$bound,''); // inserting Project Name in DB with hardcoded groupID and no reference 
    echo "\n ProjectId: ".$projectId."\n"; 
    $files=explode(",oneFileTag,",$project[1]); 


    for($fileCounter=0;$fileCounter<count($files);$fileCounter++) 
    { 
     $message='Adding Layer: '.$files[$fileCounter]; 
     echo'<scripttype="text/javascript">alert(\'asd\');notification("'.$message.'",2,"loading"); </script>'; 

     $Layer=explode("LayerFieldTag",$desFileFields[0]); 
     $LayerName=explode("LayerName:",$Layer[0]); 
     $LayerName=$LayerName[1]; 
     echo "\n\n\nLayerName: ".($LayerName)."\n"; 

     $typeId= getLayerAssetType($LayerName,1);  
     $layerId=getLayerAssetId($LayerName,$projectId); 

     echo "\ntypeid: ".$typeId."\n"; 
     echo "\nLayerid: ".$layerId."\n"; 

    } 

我想在for循環中執行JavaScript的功能,我的意思是我想在用js文件寫入的對話框中顯示所有文件名。我面臨的問題是它會被回聲調用,但是這個回聲會被捕獲到ajax請求的成功函數。我想執行這個echo命令。

+1

創建一個在循環中填充的數組,然後在迴路後將其作爲json_encoded字符串回顯 – adeneo

+0

您好先生,我希望在每次迭代時調用javascript函數。我想顯示所有文件的用戶進度。 –

+0

@ user2174920在你的問題中沒有什麼要求向用戶顯示進度,要清楚你真正想要在這裏解決什麼問題 – dbf

回答

1

你有你的JS回調邏輯在錯誤的地方。通常,避免使用PHP編寫Javascript邏輯。

相反,您應該從您的PHP文件返回一個JSON數組,然後將for循環移至JS成功回調,並在那裏通過JSON數組響應進行循環。

例如,像...基於看着你的JS和PHP我會強烈建議花更多的時間來學習最佳實踐和出發太多進一步編碼之前的風格指南

dataType: 'json', 
success: function(files) { 
    for (var i in files) { 
     alert('asd'); 
     notification('Adding Layer: ' + files[i], 2, 'loading'); 
    } 
} 

。花時間和精力去學習如何成爲一名熟練的開發人員。