javascript - 使用 jquery 和 web api 返回未定义的值

标签 javascript c# jquery asp.net asp.net-web-api

我从搜索 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,并从实际搜索中得到响应: 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));
    }

最佳答案

您必须对 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/

相关文章:

Jquery bootstrap多选optgroup选择

javascript - 使用javascript自动将id和内容放入表td中

javascript - 使用 jQuery 拉取 JSON 对象以避免 XSS

javascript - Jquery click 函数只被调用一次

c# - 在 C# 中将字符串解析为十进制时无法限制小数位数

c# - 我如何使用 C# 代码向 WP 添加新的完整联系人?

c# - 如何使用 C# 查找所有窗口?

javascript - jQuery - 如果 array.filter 失败则显示消息?

javascript - 使用此变量获取空白值

javascript - 如何从底部显示Div的部分内容?