我从搜索 ID 更改为搜索名称,由于某种原因,下面返回了未定义的值。
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,并从实际搜索中得到响应:
[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));
}
最佳答案
您必须对 data
建立索引数组(我知道这是显而易见的,但我在评论中看到了操作问题)使用 [
和]
,声明号码0
:
例如:
data = data[0];
在您的 done
内执行此操作函数,然后就完成了。就像这样:
$.getJSON(uri + search)
.done(function (data) {
data = data[0];
$('#mountain').text(formatItem(data));
})
(是的,我以为你已经解决了)
关于javascript - 使用 jquery 和 web api 返回未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38553300/