2012-02-24 13 views
-1

コールバックメソッドを使用してJqueryオートコンプリート機能があります。しかし、それは実行されていないようです。ここでjavascript jquery関数を実行できません

は私のコードです:クライアント側で

:コードビハインドで

<script type="text/javascript"> 

$(document).ready(function() { 
       alert("hi"); 
       $("#Text1").autocomplete({ 
        minLength: 0, 
        source: function (request, response) { 
         $.ajax({ 
          type: "POST", 
          contentType: "application/json; charset=utf-8", 
          url: 'BlissMaker.aspx/GetNames', 
          data: "{ 'sname':'" + request.term + "' }", 
          dataType: "json", 
          dataFilter: function (data) { return data; }, 
          success: function (data) { 
           if (data.d != null) { 
            response($.map(data.d, function (item) { 
             return { 
              label: item.Name, 
              value: item.Id 
             } 
            })) 
           } 
          }, 
          error: function (XMLHttpRequest, textStatus, errorThrown) { 
           alert(XMLHttpRequest.responseText); 
          } 
         }); 
        }, 
        focus: function (event, ui) { 
         $("#Text1").val(ui.item.label); 
         return false; 
        } 
       }) 
        .data("autocomplete")._renderItem = function (ul, item) { 
         return $("<li></li>") 
          .data("item.autocomplete", item) 
          .append("<a><img src='" + item.icon + "' width='32' height='32' /> " + item.Name + "</a>") 
          .appendTo(ul); 
        }; 
      } 
</script> 

[WebMethod(EnableSession = true)] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public List<States> GetNames(string sname) 
{ 
    List<States> sbStates = new List<States>(); 
    con = new SqlConnection("Data Source=PRATEEK\\SQLEXPRESS;Initial Catalog=BD;Integrated Security=True;Pooling=False"); 
    con.Open(); 

Me mee = (Me)Session["Me"]; 

qr = "SELECT FBFriends.FB_Id2, ActiveInfo.Name, ActiveInfo.Profile_Pic, ActiveInfo.Gender FROM [FBFriends],[ActiveInfo] WHERE FBFriends.FB_Id1='" + mee.Id + "' AND ActiveInfo.FB_Id=FBFriends.FB_Id2"; 
ds = new DataSet(qr); 
da = new SqlDataAdapter(qr, con); 
da.Fill(ds); 

ds.Tables[0].Select(ds.Tables[0].Columns[1].ColumnName + " Like '%" + sname + "%' and " + ds.Tables[0].Columns[3].ColumnName + " = 'Female'"); 

foreach (DataRow row in ds.Tables[0].Rows) 
{ 
    States st = new States(); 
    st.Id = row.ItemArray[0].ToString(); 
    st.Name = row.ItemArray[1].ToString(); 
    st.Value = row.ItemArray[1].ToString(); 
    st.Icon = row.ItemArray[2].ToString(); 
    sbStates.Add(st); 
} 

    return sbStates; 
} 

オートコンプリート機能は、アラートと同様と呼ば取得されていないようです().. どのようにそれを呼び出すための任意の提案?

を追加しました: スタックトレースを確認した後、それは

不明なメソッド名によりgetNames

任意の提案は私にエラーを与えて?

+0

返されたデータオブジェクトをコンソールに出力できますか?コールバックの成功を確認するだけです。 – rayfranco

+0

あなたはなぜあなたがここにそれらを持ち出す前にあなた自身のエラーを見るためにJavaScriptエラーを開かないのですか? – Aristos

+0

@vini私たちの答えの3つを組み合わせると、_jk._には複数の構文エラーがあります(そのうちの1つは_Marcin Necsord Szulc_が出てきた括弧がありません)。次に、 'data:'セクションの文字列リテラルを 'dataToSend'という変数(またはあなたが呼びたいもの)に置き換えます。その後、それを実行し、それはすべての後に動作する必要があります。 – rcplusplus

答えて

0

ありがとうございました。ついに私は間違いました。 それを呼び出すために静的なるために必要なWebメソッドとものScriptManagerはEnablePageMethods=true

私のコードは今、すべて正常に動作されている必要があり、フォームに含まれています。ありがとうたくさん:)

2

最後に1つ閉じることを忘れました。その部分を固定した後

$(document).ready(function() { 
}) 

はFirebugのまたはそのようなのコンソールに応答して、要求を確認します。

1

は、コードエラーをクリーンアップしてみて、もう一度それを実行します。

Problem at line 19 character 43: Missing semicolon. 
} 

Problem at line 20 character 41: Missing semicolon. 
})) 

Problem at line 39 character 13: Expected ')' and instead saw ''. 
} 

Problem at line 39 character 13: Missing semicolon. 
} 
+0

はコードを貼り付けるのに問題があります。それ以外はすべて大丈夫です。私は論理的なエラーを求めています – vini

+0

@viniあなたは言った: 'オートコンプリート機能はアラート()と同様に呼び出されていないようです。それを呼び出す方法についての提案はありますか? 'コーディングエラーは、あなたの'警告 'が発射されず、'オートコンプリート 'が呼び出されなかった理由でした。あなたはなぜそうではないのか尋ねました。コードが実行されないと、論理エラーに対処できません。 –

+0

あなたは間違った意味で質問をしたと思います。関数が呼び出されていないということは、コードビハインドに適用されたブレークポイントに何も結果も表示されず、反応していないことを意味します。しかし私は、私が知っているIntellisenseをチェックしなかったことは認めています。今それを手伝ってもらえますか? – vini

0

私はこれがあなたの問題を引き起こすか、またはされていないかどうかわからないんだけど、私はあなたがここにこのラインを持っていたあなたのjQueryの$.ajax呼び出しに気づきました:

data: "{ 'sname':'" + request.term + "' }",

私が見つけたアヤックスは、私が$.ajaxコールのdata:フィールドに変数や文字列をCONCAT場合に失敗して呼び出します。このような呼び出し外で変数を宣言

var dataToSend = "{ 'sname':'" + request.term + "' }";

その後、これにdata:フィールドを変更します。

data: dataToSend,

この月を

はこれを試してみてくださいあなたの問題を解決しないかもしれません問題はありますが、それはより良く見えます!とにかくそれを試してください!

1

$(document).ready()はまったく呼ばれていますか?そうでない場合は、別のファイルのjavascriptですか?その場合、おそらくファイル自体に到達できず、ready()関数が呼び出されていない可能性もあります。 <script src=""></script>タグでJQueryファイルとjavascriptファイルをチェックしてください。

関連する問題