2010-12-08 12 views
1

SELECT要素を使用してjqGrid検索フォームに入力しようとしています。 colModelに興味を持って列に私は、リモートメソッドGetCustomersは

[{"Selected":false,"Text":"David Gilmour","Value":"10"}, 
{"Selected":false,"Text":"Eric Clapton","Value":"26961"}, 
{"Selected":false,"Text":"Joan Baetz","Value":"26972"}] 

としてフォーマットが、私はインクルード機能ごとに使用しているコードで、私は次のように取得していますJSONの結果を返す

searchoptions: { 
    dataUrl: '<%: Url.Content("~/Contact/GetCustomers") %>', 
    buildSelect: function (response) { 
     var theSelect = "<select>"; 
     $.each(response, function (i, data) { 
      theSelect += '<option value="' + data.Value + '">' + data.Text + '</option'; 
     }); 
     theSelect += "</select>"; 
    }, 
    sopt: ['eq', 'ne'] 
} 

を持っています実際のJSは、適切なオブジェクトとして、あなたがそれを読むことができるようにエラー

alt text

+0

渡される値は何ですか?あなたのデバッガでどのように見えるか教えてください。 –

+0

それは '[object XMLhttpRequest]' – Lorenzo

答えて

1

のようなものを使用して解析する必要が単なる文字列である、あなたは、その応答テキストを解析する必要があります。

var parsed = $.parseJSON(response.responseText); 

$.each(parsed, function(... 

または、レスポンステキストを渡すコードを変更するか、解析結果のみを渡します。

+0

@patrick_dw:素晴らしい!どうもありがとう! – Lorenzo

0

あなたは、このJSONオブジェクトを解析していますか?

JSONオブジェクトの配列を返すので、反復処理を行うごとに各オブジェクトを個別に解析する必要があります。

0

私はそれぞれの機能の中で$(this)を使用しようとします。それが正しいように見えますが、何かが怪しいかもしれません。代わりに、for (var d in data)(私は思う)を使ってJSONを反復することができます。

1

応答は、それはあなたがXMLHttpRequestオブジェクトを取得している(上記のコメントによる)のでjson2.js

var data = JSON.parse(response); 
+0

と言うか、jQueryの[parseJSON](http://api.jquery.com/jQuery.parseJSON/)メソッドを使用します。 – jball

1

the close answerをご覧ください。コードを少し修正する必要があります:

buildSelect: function(data) { 
    var response = jQuery.parseJSON(data.responseText); 
    var s = '<select>'; 
    if (response && response.length) { 
     for (var i = 0, l=response.length; i<l ; i++) { 
      var ri = response[i]; 
      s += '<option value="' + ri.Value + 
       (ri.Selected ? '" selected="selected">': '">') + 
       ri.Text + '</option>'; 
     } 
    } 
    return s + "</select>"; 
} 
+0

より多いこれも同様に機能します。問題は@patrick_dwで示されているように 'parseJSON(response.responseText);'を使用していて、あなたの答えでさえ存在していました。その変更の後で、 '$ .each'ブロックはコード内でうまく動作し、よりコンパクトです。どうもありがとう! – Lorenzo

+0

@Lorenzo:ようこそ!最も重要なことは、あなたの問題が解決されたことです。真実を伝えるために、私はjqgridへの答えを書くのが好きで、純粋なjQuery/jQuery UIの質問には好きではありません。 :-) – Oleg

+0

私はあなたが何を意味するか知っています。私にとってあなたはjqGridの最大参照です! :) – Lorenzo