2011-10-30 1 views
4

smartというjqueryプラグインを購入しましたが、配列ではなくデータとしてjson配列を渡したいと思います。jsonデータをsmart suggestプラグインに入力する

 

    array('image' => 'assets/images/fruits/apple.jpg', 'description' => 'One of America\'s favorite fruits.'), 
            'Avocado' => array('image' => 'assets/images/fruits/avocado.jpg', 'description' => 'The avocado is a dense, evergreen tree, shedding many leaves in early spring.'), 
            'Banana' => array('image' => 'assets/images/fruits/banana.jpg', 'description' => 'Bananas are fast-growing herbaceous perennials arising from underground rhizomes.'), 
            'Gooseberry' => array('image' => 'assets/images/fruits/gooseberry.jpg', 'description' => 'Gooseberries are deciduous shrubs.'), 
            'Grape' => array('image' => 'assets/images/fruits/grape.jpg', 'description' => 'Grapes come in large clusters.'), 
            'Jackfruit' => array('image' => 'assets/images/fruits/jackfruit.jpg', 'description' => 'The jackfruit tree is handsome and stately.'), 
            'Mango' => array('image' => 'assets/images/fruits/mango.jpg', 'description' => 'Mango trees make handsome landscape specimens and shade trees.'), 
            'Papaya' => array('image' => 'assets/images/fruits/papaya.jpg', 'description' => 'The papaya is a short-lived, fast-growing, woody, large herb to 10 or 12 feet in height. It is also regarded by some as being delicious.'), 
            'Peach' => array('image' => 'assets/images/fruits/peach.jpg', 'description' => 'These are great in the summertime.'), 
            'Pear' => array('image' => 'assets/images/fruits/pear.jpg', 'description' => 'Pears are delicious fruits.'), 
            'Pineapple' => array('image' => 'assets/images/fruits/pineapple.jpg', 'description' => 'The pineapple plant is a herbaceous perennial, 2-1/2 to 5 ft.'), 
            'Rose Apple' => array('image' => 'assets/images/fruits/rose_apple.jpg', 'description' => 'The rose apple is a highly decorative evergreen large shrub.'), 
            'Tamarind' => array('image' => 'assets/images/fruits/tamarind.jpg', 'description' => 'The bright green, pinnate foliage is dense and feathery in appearance.'), 
            'White Sapote' => array('image' => 'assets/images/fruits/white_sapote.jpg', 'description' => 'The white sapote forms a medium to very large evergreen tree.'), 
           ); 
    $vegetables = array(
            'Alfalfa' => array('image' => 'assets/images/fruits/alfalfa.jpg', 'description' => 'One cup of raw, sprouted alfalfa seeds, contains 1.32 grams of protein.'), 
            'Artichoke' => array('image' => 'assets/images/fruits/artichoke.jpg', 'description' => 'One medium artichoke cooked with no added salt has 3.47 grams protein.'), 
            'Asparagus' => array('image' => 'assets/images/fruits/asparagus.jpg', 'description' => 'Half cup (about 6 spears) cooked with no added salt contains 2.16 grams of protein.'), 
            'Broccoli' => array('image' => 'assets/images/fruits/broccoli.jpg', 'description' => 'Half cup of broccoli, cooked with no added salt contains 1.86 grams protein.'), 
            'Carrots' => array('image' => 'assets/images/fruits/carrots.jpg', 'description' => 'Half cup cooked with no added salt contains 0.59 grams protein.'), 
            'Celery' => array('image' => 'assets/images/fruits/celery.jpg', 'description' => 'One cup of celery, cooked, boiled, drained with no added salt has 1.25 grams protein.'), 
            'Corn' => array('image' => 'assets/images/fruits/corn.jpg', 'description' => 'One large ear of yellow corn, cooked with no salt contains 4.02 grams protein.'), 
            'Green Pepper' => array('image' => 'assets/images/fruits/green_pepper.jpg', 'description' => 'One small raw pepper contains 0.64 grams protein.'), 
            'Mushroom' => array('image' => 'assets/images/fruits/mushroom.jpg', 'description' => 'Half a cup of raw mushrooms contains 1.08 grams of protein.'), 
            'Onion' => array('image' => 'assets/images/fruits/onion.jpg', 'description' => 'One small onion cooked without salt contains 0.82 grams protein.'), 
            'Potato' => array('image' => 'assets/images/fruits/potato.jpg', 'description' => 'One medium baked potato without salt contains 4.33 grams of protein.'), 
            'Spinach' => array('image' => 'assets/images/fruits/spinach.jpg', 'description' => 'One cup of raw spinach contains 0.86 grams of protein.'), 
            'Squash' => array('image' => 'assets/images/fruits/squash.jpg', 'description' => 'One cup of sliced summer squash, boiled with no added salt contains 1.87 grams of protein.'), 
           ); 
    ?> 

この配列は私がJSONとして渡したい「search_multiple.php」ファイルに渡されます。

現在のデータファイル「サンプルdata.phpは」のように見えます

 

    array(), 'vegetables' => array()); 
    foreach ($fruits as $name => $data) 
    { 
     if (stripos($name, $q) !== false) 
     { 
      $results['fruits'][$name] = $data; 
     } 
    } 
    foreach ($vegetables as $name => $data) 
    { 
     if (stripos($name, $q) !== false) 
     { 
      $results['vegetables'][$name] = $data; 
     } 
    } 

    /* Get the data into a format that Smart Suggest will read (see documentation). */ 
    $final_fruits = array('header' => array(), 'data' => array()); 
    $final_fruits['header'] = array(
                      'title' => 'Fruits',          # Appears at the top of this category 
                      'num' => count($results['fruits']),   # Displayed as the total number of results. 
                      'limit' => 5              # An arbitrary number that you want to limit the results to. 
                     ); 
    foreach ($results['fruits'] as $name => $data) 
    { 
     $final_fruits['data'][] = array(
                  'primary' => $name,                       # Title of result row 
                  'secondary' => $data['description'],              # Description below title on result row 
                  'image' => $data['image'],                   # Optional URL of 40x40px image 
                  'onclick' => 'alert(\'You clicked on the '.$name.' fruit!\');', # JavaScript to call when this result is clicked on 
                  'fill_text' => strtolower($name)                  # Used for "auto-complete fill style" example 
                 ); 
    } 

    $final_vegetables = array('header' => array(), 'data' => array()); 
    $final_vegetables['header'] = array(
                      'title' => 'Vegetables',          # Appears at the top of this category 
                      'num' => count($results['vegetables']),   # Displayed as the total number of results. 
                      'limit' => 5                # An arbitrary number that you want to limit the results to. 
                     ); 
    foreach ($results['vegetables'] as $name => $data) 
    { 
     $final_vegetables['data'][] = array(
                  'primary' => $name,                         # Title of result row 
                  'secondary' => $data['description'],                # Description below title on result row 
                  'image' => $data['image'],                     # Optional URL of 40x40px image 
                  'onclick' => 'alert(\'You clicked on the '.$name.' vegetable!\');', # JavaScript to call when this result is clicked on 
                  'fill_text' => strtolower($name)                  # Used for "auto-complete fill style" example 
                 ); 
    } 

    /* Output JSON */ 
    $final = array($final_fruits, $final_vegetables); 
    header('Content-type: application/json'); 
    echo json_encode($final); 
    die(); 
    ?> 

jsonデータを 'search_multiple.php'ファイルに渡す方法を知りたいと思います。例えば:私はhttp://kabeerpc.tkに私の現在の進行状況を主催してきた

http://jamesskidmore.com/scripts/smartsuggest/

<?php 
$fruits = '{ 
    "Apple":{"image":"assets/images/fruits/apple.jpg","description":"One of America\'s favorite fruits."}, 
    "Avocado":{"image":"assets/images/fruits/avocado.jpg","description":"The avocado is a dense, evergreen tree, shedding many leaves in early spring."} 
    "Banana":{"image":"assets/images/fruits/banana.jpg","description":"Bananas are fast-growing herbaceous perennials arising from underground rhizomes."}, 
    "Gooseberry":{"image":"assets/images/fruits/gooseberry.jpg","description":"Gooseberries are deciduous shrubs."} 
    "Grape":{"image":"assets/images/fruits/grape.jpg","description":"Grapes come in large clusters."}, 
    "Jackfruit":{"image":"assets/images/fruits/jackfruit.jpg","description":"The jackfruit tree is handsome and stately."} 
    "Mango":{"image":"assets/images/fruits/mango.jpg","description":"Mango trees make handsome landscape specimens and shade trees."}, 
    "Papaya":{"image":"assets/images/fruits/papaya.jpg","description":"The papaya is a short-lived, fast-growing, woody, large herb to 10 or 12 feet in height. It is also regarded by some as being delicious."} 
    "Peach":{"image":"assets/images/fruits/peach.jpg","description":"These are great in the summertime."}, 
    "Pear":{"image":"assets/images/fruits/pear.jpg","description":"Pears are delicious fruits."}, 
    "Pineapple":{"image":"assets/images/fruits/pineapple.jpg","description":"The pineapple plant is a herbaceous perennial, 2-1/2 to 5 ft."} 
    "Rose Apple":{"image":"assets/images/fruits/rose_apple.jpg","description":"The rose apple is a highly decorative evergreen large shrub."}, 
    "Tamarind":{"image":"assets/images/fruits/tamarind.jpg","description":"The bright green, pinnate foliage is dense and feathery in appearance."} 
    "White Sapote":{"image":"assets/images/fruits/white_sapote.jpg","description":"One cup of sliced summer squash, boiled with no added salt contains 1.87 grams of protein."}, 
      }'; 
$vegetables = '{ 
    "Alfalfa":{"image":"assets/images/fruits/apple.jpg","description":"One of America\'s favorite fruits."}, 
    "Artichoke":{"image":"assets/images/fruits/avocado.jpg","description":"The avocado is a dense, evergreen tree, shedding many leaves in early spring."} 
    "Asparagus":{"image":"assets/images/fruits/banana.jpg","description":"Bananas are fast-growing herbaceous perennials arising from underground rhizomes."}, 
    "Broccoli":{"image":"assets/images/fruits/gooseberry.jpg","description":"Gooseberries are deciduous shrubs."} 
    "Carrots":{"image":"assets/images/fruits/grape.jpg","description":"Grapes come in large clusters."}, 
    "Celery":{"image":"assets/images/fruits/jackfruit.jpg","description":"The jackfruit tree is handsome and stately."} 
    "Corn":{"image":"assets/images/fruits/mango.jpg","description":"Mango trees make handsome landscape specimens and shade trees."}, 
    "Green Pepper":{"image":"assets/images/fruits/papaya.jpg","description":"The papaya is a short-lived, fast-growing, woody, large herb to 10 or 12 feet in height. It is also regarded by some as being delicious."} 
    "Mushroom":{"image":"assets/images/fruits/peach.jpg","description":"These are great in the summertime."}, 
    "Onion":{"image":"assets/images/fruits/pear.jpg","description":"Pears are delicious fruits."}, 
    "Potato":{"image":"assets/images/fruits/pineapple.jpg","description":"The pineapple plant is a herbaceous perennial, 2-1/2 to 5 ft."} 
    "Spinach":{"image":"assets/images/fruits/rose_apple.jpg","description":"The rose apple is a highly decorative evergreen large shrub."}, 
    "Squash":{"image":"assets/images/fruits/tamarind.jpg","description":"The bright green, pinnate foliage is dense and feathery in appearance."} 
      }'; 
?> 

ドキュメントがあります。

答えて

2

JSON配列のようなものはありません。 JSONドキュメントの配列は、配列の表現(またはシリアライゼーション)です。したがって、単純にJSONをデコードすることができます。

<?php 
$fruits_json = '{ 
    "Apple":{"image":"assets/images/fruits/apple.jpg", 
      "description":"One of America\'s favorite fruits."}, 
    "Avocado":{"image":"assets/images/fruits/avocado.jpg", 
      "description":"The avocado is a dense, evergreen tree."}}'; 
$vegetables_json = '{ 
    "Alfalfa":{"image":"assets/images/fruits/pear.jpg", 
       "description":"An american alfafa."}, 
    "Artichoke":{"image":"assets/images/fruits/peach.jpg", 
       "description":"An American artichoke."}}'; 
// Decode input JSON 
$fruits = json_decode($fruits_json, true); 
$vegetables = json_decode($vegetables_json, true); 

$q = isset($_GET['q']) ? $_GET['q'] : ''; 
$final = array(
    _construct_smartSuggestion('fruits', $fruits, $q), 
    _construct_smartSuggestion('vegetables', $vegetables, $q) 
); 
header('Content-type: application/json'); 
die(json_encode($final)); 

function _construct_smartSuggestion($name, $described, $q) { 
    $data = array(); 
    foreach ($described as $dname=>$d) { 
    // Search for the search query 
    if (stripos($dname, $q) === false && 
     stripos($d['description'], $q) === false) { 
     continue; 
    } 

    $data[] = array('primary' => $dname, 
        'secondary' => $d['description'], 
        'image' => $d['image']); 
    } 
    $header = array('title'=>$name, 'num'=>count($data), 'limit'=>5); 
    return array('header'=>$header, 'data'=>$data); 
} 

JSONシリアル化が有効であることを確認してください。 JSONの例では、多くのエントリの後にカンマがありません(たとえばAvocado)。

Here's a live demoAmericanを検索すると、そこで利用可能な4つの結果のうち3つが生成されます。

+0

こんにちはphihag、私を助けてくれてありがとう、私は今JSONが何であるかを理解していますが、このコードはファイル全体を置き換えると思われますか?私と一緒に私はコーディングに新しいです – kabeerv

+0

@kabeerv他の人も答えられるように、stackoverflowに関するすべての関連情報を保管してください。 PHPコードとHTMLの修正版の両方を更新しました。 – phihag

+1

はいライブサンプルが見られるように質問を編集しました(kabeerpc.tk) – kabeerv

関連する問題