2012-03-22 36 views
1

jQueryからWebサービスを呼び出す必要があります。次のコードが当てはまるブレークポイントを置いても、Webサービスには到達していません。またjqueryからWebサービスを呼び出す

function searchItems() { 

$("#txtSectionName").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: "/DataService.asmx/SearchSections", 
      data: "{'searchTerm' : '" + $("#txtSectionName").val() + "'}", 
      dataType: "json", 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      dataFilter: function (data) { return data; }, 
      success: function (data) { 
       response($.map(data.d, function (item) { 
        return { 
         value: item.Name 
        } 
       })) 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(textStatus); 
      } 
     }); 
    }, 
    minLength: 1 
}); 

}

+0

送信するデータはJSONではありません。 JSONでは、キーと文字列の値を二重引用符で囲む必要があります。したがって、Webサービスは要求を処理できません。 –

+0

@OPあなたはWebサービスのメソッドコードを共有できますか? – Rafay

+0

ur応答Felix Klingと3nigmaに感謝しています。遅れて申し訳ありません。 – shanish

答えて

1

データが不正です。 jQueryはJSONエンコーディングを処理します。オブジェクトを渡すだけです:

 $.ajax({ 
      url: "/DataService.asmx/SearchSections", 
      data: {searchTerm: $("#txtSectionName").val() }, 
      dataType: "json", 
      type: "POST", 
      success: function (data) { 
       response($.map(data.d, function (item) { 
        return { 
         value: item.Name 
        } 
       })) 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(textStatus); 
      } 
     }); 
+1

jQueryこれをJSONに変換しません。これは、JSONではなく 'searchTerm = value'のようなクエリ文字列を作成します。 –

+0

これはPOST要求であるため、クエリ文字列ではありません。しかし、あなたは正しく、JSONではありません。私は、Railsがハッシュとしてデコードする、エンコードされたネストされたURLを意味しました。しかし、それはあなたがサーバー側で持っているものに依存します... – Blacksad

+0

ブラックサッドに感謝します。 – shanish

1

あなたは、クロスドメインからの要求を受け入れるCORSを参照してください、または、問題を解決することがdataTypeとしてjsonpを使用しようとするWebサービスを構成している...ウェブサービスは通常GETリクエストを処理します

+0

URLのコードからは、ここではクロスドメインではありません。 – Blacksad

関連する問題