2017-07-04 16 views
0

私は自分のアプリケーション内の検索モジュールを作成しようとしていますが、私のデータベースからの応答は次の形式であると私はそれは私がして、検索用語ずに対応させるにはどうすればよいのエラーに間違ったJson形式の応答を得る。それを必要な形式で返す方法

ERROR SyntaxError: Unexpected token s in JSON at position 0 

sa[{"id":"4","worklocation":"Hyderabad","firstname":"Sanjay","lastname":"Tutuki","gender":"Male","aadharno":"0","panno":"2147483647","employeetype":"asdasd","dateofbirth":"2017-07-12","city":"Mumbai"}] 

を取得しています?または、エラーなしでコンポーネント内の値を取得する方法。

これは私のコードです:

service.ts:

search(terms: Observable<string>) { 
    return terms.debounceTime(400) 
     .distinctUntilChanged() 
     .switchMap(term => this.searchEntries(term)); 
    } 
      searchEntries(term) { 
       const baseUrl="http://localhost/Angular/search.php?search=" 
    return this.http 
     .get(baseUrl + term) 
     .map(res => res.json()); 
    } 

はコンポーネント:

export class EmployeeDirectory { 
    data : Data[]; 
    searchTerm$ = new Subject<string>(); 

    constructor(private dataservice : DataService){ 

     this.dataservice.search(this.searchTerm$) 
     .subscribe(data => { 
     this.data = data.data; 
     console.log(data); 

     }); 
    } 

    search(searchTerm$){ 
    this.dataservice.search(this.searchTerm$) 
     .subscribe(data => { 
     this.data = data.data; 
     console.log(data); 
     }); 
    } 
    } 

テンプレート:

<div class="col-md-6 col-sm-12 col-xs-12 "> 
    <form method="GET" name="form" autocomplete="off"> 
    <div class="col-lg-9"> 
    <div class="input-group"> 
     <input type="text" class="form-control" (keyup)="searchTerm$.next($event.target.value)" placeholder="Search for..."> 
     <span class="input-group-btn"> 
     <button class="btn btn-secondary" type="button" (click)="search(this.searchTerm$)" ><i class="glyphicon glyphicon-search"></i></button> 
     </span> 
    </div> 
    </div> 
    </form> 
</div> 


    <div *ngIf="data"> 
     <table *ngFor="let employee of data"> 
     <tr><td>First Name: </td><td>{{employee.firstname}}</td></tr> 
     </table> 

PHPファイル:

<?php 
header("Allow-Access-Header-Origin: *"); 
$servername ="localhost"; 
$username ="root"; 
$password="sandeepchetikam"; 
$dbase = "mydb"; 

$conn = mysqli_connect($servername,$username,$password,$dbase); 
if(!$conn){ 
    echo "Error" .mysqli_error($conn); 
} 
$name =$_GET['search']; 
print_r($name); 
$sql = "SELECT * FROM newdb WHERE firstname LIKE '%{$name}%' "; 
$result = mysqli_query($conn,$sql); 
while ($row = mysqli_fetch_assoc($result)) 
{ 
    $rows[] = $row; 
} 
echo json_encode($rows); 
?> 

また、この関数は最初の検索キーにのみ応答し、他の検索項目では機能しません。誰もこれで私を助けることができますか?

+1

を助けることを願っていますか? – apokryfos

+0

はい、それが問題でした。みんな、ありがとう 。誰かがこれで私を助けることができますか?どのように私はキーではなく検索として検索ボタンを作るのですか?ボタンのsearchTerm $を送信する方法は? – Prakash

+0

私はあなたがGoogleにできると確信しています。 – apokryfos

答えて

2
print_r($name); 

1

は、あなたのコードからprint_r($name);を削除ちょっと疑わしいです。最初にデータを印刷するので、これも応答データであり、最後のエコーjsonデータも応答データであるため、正しい応答データが変更されます。 htmlコードを書いたり、ファイルにエコーやデータを印字してレスポンスとして送ると、これはもっと重要です。

ので、あなたの総コードが

<?php 
header("Allow-Access-Header-Origin: *"); 
$servername ="localhost"; 
$username ="root"; 
$password="sandeepchetikam"; 
$dbase = "mydb"; 

$conn = mysqli_connect($servername,$username,$password,$dbase); 
if(!$conn){ 
    echo "Error" .mysqli_error($conn); 
} 
$name =$_GET['search']; 
$sql = "SELECT * FROM newdb WHERE firstname LIKE '%{$name}%' "; 
$result = mysqli_query($conn,$sql); 
while ($row = mysqli_fetch_assoc($result)) 
{ 
    $rows[] = $row; 
} 
echo json_encode($rows); 
?> 

になりますが、それはあなたがこの権利をテストしたときには、 ``ますprint_r($ name)を削除しなかったあなたに

関連する問題