2016-08-22 92 views
0

無法解決如何發送結果csv作爲Ajax對象返回,它足夠簡單,搜索按預期工作,但結果作爲字符串收集後發回...Ajax到PHP和返回CSV

CSV

header1 , header2 , header3, header4, header5 
Foo  , age-20 , male , city NY , Cars 
Bar  , age-32 , female , city FL , Clothes 
etc... 

PHP

$search = $_POST['search']; 
$row = 0; 
$handle = fopen("items/data.csv", "r"); 
$complete = array(); 
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     if ($row == 0) { 
      $row++; 
     }else { 
     for ($x=0; $x < 4; $x++) { 
      $se = $data[$x]; 
      if ($se == $search){ 
       $num = count($data); 
       $row++; 
        for ($c=0; $c < $num; $c++) { 
        $complete[] = $data[$c] ; 
       } 
      } 
    } 
} 
} 
fclose($handle);  
echo json_encode($complete); 

AJAX

$.ajax({  
url:'search.php', 
type: 'POST', 
data: {search: $('#search').val()}, 
success: function(data) { 
console.log(data); 

}, 
error: function (error ,xml){ 
console.log(error); 
} 
}) 
} 

林具有硬時間試圖使用該信息被返回,我deally我想它作爲一個數組();

**Returned String Output** 

["Bar","Age-32","Female","city FL","Clothes"] 

感謝

+0

你能後的返回的字符串的例子嗎? – skreborn

回答

1

想到的是具有dataType屬性,使您可以強制預期的數據類型,在這種情況下json$.ajax的第一件事。

請注意,根據文檔 - 如果在服務器端正確設置了MIME類型,則不需要定義dataType。您可以使用PHP的header函數來實現:header('Content-Type: application/json')

閱讀官方文檔here

$.ajax({ 
    url: 'search.php', 
    type: 'POST', 
    dataType: 'json', 
    data: { search: $('#search').val() }, 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function (error, xml) { 
     console.log(error); 
    } 
}); 
+0

IT沒有按預期工作,但我可以搞砸,所以它的我的編碼是問題,但感謝這解決了這個問題... – joshua

1

在你的Ajax請求集的數據類型JSON你需要設置頁眉

$.ajax({  
    url:'search.php', 
    type: 'POST', 
    dataType: "json", 
    data: {search: $('#search').val()}, 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function (error ,xml){ 
     console.log(error); 
    } 
}); 

而在PHP文件

header('Content-Type: application/json'); 
+0

感謝您的幫助,這也是我遇到的問題的正確方法... – joshua