2016-05-19 13 views
1

これは、これまで私のセマンティックUI APIのセットアップです:jQueryの負荷()セマンティックUI APIの

$.fn.api.settings.api = { 
    'search'  : '/api/search.api.php?query={value}' 
}; 

$(document).ready(function() { 

$('.searchterms input') 
    .api({ 
     action  : 'search', 
     stateContext : '.ui.input', 
     minCharacters : 3 
    }); 

}); 

search.api.phpは、mysqlのクエリを発射し、その結果を<div id="#results">をロードする必要があります。

foreach($results AS $aresult) { 
    $smarty->display('single_result.tpl'); 
} 

は今、私の質問:どのように私はそれに対処するために)(jQueryの負荷を使用することができますsearch.api.phpは、これらの行が含まれるように、テンプレートエンジンとして、私は、smartyを使うのか?それは何かのようにする必要があります

$("#results").load(...???); 
+0

$( "#results")。load(あなたのurl、{サーバーに送信したいデータ}); –

+0

確かに、私はload()の構文を知っています。しかし、セマンティックUI APIとのやりとりを強制するにはどうすればいいですか? – Dong3000

答えて

0

私は解決策を見つけた、それはうまく動作します。これらのスニペットで

Javascriptを見てみましょう:

$.fn.api.settings.api = { 
    'search'  : '/api/search.api.php?query={value}' 
}; 

$.fn.api.settings.successTest = function(response) { 
    if(response && response.success) { 
     return response.success; 
    } 
    return false; 
}; 

$('.searchterms input') 
    .api({ 
     action  : 'search', 
     stateContext: '.ui.input', 
     minCharacters : 3, 
     successTest: function(response) { 
      return response.success || false; 
     }, 
     onComplete: function(response) { 
      $("#items").html(response.items); 
      $(".results").html(response.data); 
     } 
    }) 
; 

を見てわかるように、解決策は、コールバックonCompleteで達成することができます。

onComplete: function(response) { 
    $("#items").html(response.items); 
    $(".results").html(response.data); 
} 

は、PHP(search.api.php):検索で

$output=''; 
foreach($results AS $result) { 
    $smarty->assign("result", $result); 
    $output .= $smarty->fetch('single_result.tpl'); 
} 
$response=json_encode(array(
    'success' => true, 
    'message' => 'Okay', 
    'items' => $entries_found, 
    'data' => $output 
)); 

echo $response; 

そして、重要なのは、代わりにload()を使用して、私は単に<div class="results">エリアにHTMLコードを置き換えるために)(HTMLを使用しました.in.phpは$smarty->display()を使用せず、$smarty->fetch()を使用し、結果を変数$outputにキャッチすることが重要です。この変数を返すことができます。