2016-07-24 8 views
1

IDの検索から名前の検索に変更されました。何らかの理由で未定義の値が返されています。jqueryとweb apiを使用して未定義の値が返されました

   var uri = 'http://localhost:11313/api/Mountains?name='; 

       function formatItem(item) { 
        return item.Latitude +', '+ item.Longitude; 
       } 

       function find() { 
        var search = $('#MountID').val(); 
        $.getJSON(uri + search) 
         .done(function (data) { 
          $('#mountain').text(formatItem(data)); 
         }) 
         .fail(function (jqXHR, textStatus, err) { 
          $('#mountain').text('Error: ' + err); 
         }); 
       } 

これはうまくいきますか?

   var uri = 'http://localhost:11313/api/Mountains'; //changed 

       function formatItem(item) { 
        return item.Latitude +', '+ item.Longitude; 
       } 

       function find() { 
        var search = $('#MountID').val(); 
        $.getJSON(uri + '/' + search) //changed 
         .done(function (data) { 
          $('#mountain').text(formatItem(data)); 
         }) 
         .fail(function (jqXHR, textStatus, err) { 
          $('#mountain').text('Error: ' + err); 
         }); 
       } 

このパスはvar uri = 'http://localhost:11313/api/Mountains';を動作し、これはvar uri = 'http://localhost:11313/api/Mountains?name=';ない理由はありますか?

私はvar uri = 'http://localhost:11313/api/Mountains?name=';にアクセスできます。最後の名前は、私のブラウザからちょうどいいですか?

<Mountain> 
<Height_ft>2953</Height_ft> 
<Height_m>900</Height_m> 
<ID>c21</ID> 
<Latitude>57.073142</Latitude> 
<Longitude>-3.3310457</Longitude> 
<Name>Culardoch</Name> 
<humidity>0.42</humidity> 
<snowCover>1.84</snowCover> 
<temperature>66</temperature> 
</Mountain> 

私は、ステータス200がOKを得ると私はボタンをクリックしたときに、私は実際の検索からresponeを得る: enter image description here

[ResponseType(typeof(Mountain))] 
    public IHttpActionResult GetMountain(string id) 
    { 
     Mountain mountain = db.Mountains.Find(id); 
     if (mountain == null) 
     { 
      return NotFound(); 
     } 

     return Ok(mountain); 
    } 


    public IQueryable<Mountain> GetMountainByName(string name) 
    { 
     return db.Mountains.Where(n => string.Equals(n.Name, name)); 
    } 
+0

、どのような発信要求は次のように見えますか?あなたは 'localhost:11313/api/mountains?name = search'のようなものを期待していますか? – Delosdos

+0

発信リクエストはOKです。「http:// localhost:11313/api/Mountains?name = Culardoch'はステータス200 okを返します。まだ未定義、定義されていないと言っていますか? –

+1

'data'には何がありますか? – Hydro

答えて

1

あなたがインデックスにdata配列があるでしょう(私が知っています

例::明らかに、私は数0を宣言し、[]を使ってコメントにOP質問を)見

data = data[0]; 

あなたのdone機能の中でこれを実行してください。これと同じように:あなたは、あなたのブラウザのデバッグツールでネットワーク]タブを表示する場合

   $.getJSON(uri + search) 
        .done(function (data) { 
         data = data[0]; 
         $('#mountain').text(formatItem(data)); 
        }) 

(ええ、私はあなたがそれを解決したと思った)

+1

Pro Handをご利用いただきありがとうございます。私はこれを受け入れたものとしてマークします。 –

+0

@GarrithGraham助けてくれてうれしい! – Hydro

関連する問題