2011-08-05 27 views
0

最初のフィールドで2番目のフィールドで使用できるものを制限し、2番目のフィールドで3番目のフィールドで使用できるものを制限するフォームを作成しています。jqueryuiカスタムデータの自動作成、リスト作成

私はこれにJqueryuiオートコンプリートを使用しようとしていますが、問題が発生しています。私は他の多くのソースをオンラインで試しましたが、それを取るようには見えません。私は問題を説明するかもしれないウィジェットをカスタマイズするために新しいです。

現在、私は適切に投稿し、私のPHPファイル(以下にあります)からデータを受け取ることができますが、オートコンプリートはそれが見つけた情報をまだ表示していません。データはそこにあり、私は単にそれをポップダウンリストに入れることはできません。

思考?

$tier1=mysql_real_escape_string($_POST['tier1']); 
$tier2=mysql_real_escape_string($_POST['tier2']); 
$tier3=mysql_real_escape_string($_POST['tier3']); 

if($tier1!=''){ 
    $query = mysql_query("SELECT * FROM varIssues WHERE tier1 LIKE '$tier1%'"); 
} 

if($tier2!=''){ 
    $query = mysql_query("SELECT * FROM varIssues WHERE tier1='$tier1' AND tier2 LIKE '$tier2%'"); 
} 

if($tier3!=''){ 
    $query=mysql_query("SELECT * FROM varIssues WHERE tier1 = '$tier1' AND tier2 ='$tier2' AND tier3 LIKE '$tier3%'"); 
} 
    //build array of results 
    for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) { 
     $row = mysql_fetch_assoc($query); 
     $issues[$x] = array('tier1'=>$row["tier1"],'tier2'=>$row['tier2'],'tier3'=>$row['tier3']); 
    } 

    //echo JSON to page 
    $response = $_GET["callback"] . "(" . json_encode($issues) . ")"; 
    echo $response; 
+0

使用放火犯やIEの開発ツールは、具体的に無名関数pは、あなたの成功のコールバックでブレークポイントを置く中ラベルと値のプロパティを持つオブジェクトを返します。ちょうど推測すると、あなたのfnが呼び出されていない、またはitemがtier1の名前でプロパティを公開していないと言っています。しかし、デバッガで見るのは簡単です。推測は必要ありません。 – Cheeso

答えて

0

応答の最後にセミコロンを使用しますか?

$.ajax({ 
    url: "issue_autocomplete.php", 
    type: "POST", 
    dataType: "json", 
    data:$form_data, 
    success: function(data){ 
     response($.map(data, function(item){ 
      return{ 
        label:item.term1, 
        value:item.term2 
       } 
     })); 
    } 
}); 

編集:返されたデータが正しいかについてのあなたの文を(おそらく結果を解析仮定する別の方法 - 確実に知るには、以下の()アラートをアンコメント

function autocompleteJSONParseCode(data) { 
    var rows = new Array(); 
    var rowData = null; 
    for (var i = 0, dataLength = data.length; i < dataLength; i++) { 
    rowData = data[i]; 
    // alert(rowData.term2+":"+rowData.term1);//uncomment to see data as it parses 
    rows[i] = { 
     value: rowData.term2, 
     label: rowData.term1 
    }; 
    } 

    return rows; 
}; 
$(".tiers input[type='text']").autocomplete({ 
    source: function(request, response) { 
     var $form_data=$('.tiers').parents('form').serialize(); 
     $.ajax({ 
     url: "issue_autocomplete.php", 
     dataType: "json", 
     type: "POST", 
     contentType: "application/json", 
     data:$form_data, 
     success: function(data) { 
      var rows = autocompleteJSONParseCode(data); 
      response(rows); 
     } 
     }); 
    }, 
    minLength: 2 
}); 
+0

固定しています。そのような運はありません。 – samuel

+0

私はこれを朝の仕事で試してみましょう。それをつけてくれてありがとう。 – samuel

0

私は、これはあなたが戻って

$issues[$x] = array('tier1'=>$row["tier1"],'tier2'=>$row['tier2'],'tier3'=>$row['tier3']); 

送信しているJSONがある場合は、このようにアクセスする必要があることだと思う(うまく情報を取得している)

$(".tiers input[type='text']").autocomplete({ 
    source: function(request, response) 
    {    
    var $form_data=$('.tiers').parents('form').serialize(); 
     $.ajax({ 
       url: "issue_autocomplete.php", 
       type: "POST", 
       dataType: "json", 
       data:$form_data,              
        success: function(data){ 
        response($.map(data, function(item){ 
         return{  
         label:item.tier1, 
         value:item.tier1      
         } 
       })) 
       } 
     }); 

        }, 
        minLength: 2 
       }); 

とPHP

  success: function(data){ 
       response($.map(data, function(item){ 
        return{  
        label:item.tier1, 
        value:item.tier2      
        } 
      })) 
      } 

あなたが火かき棒がインストールされている場合は、console.logでデータが返され、すべてが正常であることを確認することができます。

+0

はそのタイプミスを修正しましたが、まだ対処していません。火かき棒では、データが正しく返ってきていることがわかります。それは問題のように見える表示です。 – samuel

関連する問題