0

我有这段代码应该从本地主机站点获得 JSON 答案。如果我从 Chrome 浏览此 URL,我会得到很好的响应,但如果我尝试从 HTML 页面运行此代码,我会收到错误(通过 VS 调试)。

有任何想法吗?

$(document).ready(function () {
  alert("hello");
  var request = $.ajax({
    url: "http://localhost:3157/api/Products",
    type: "GET",
    dataType: "json"
  });
  request.done(function(msg) {
    alert("msg is: " + msg);
  });
  request.fail(function (jqXhr, textStatus) {
    alert("Request failed: " + textStatus);
  });
});

更新 - 添加了 xml 输出

<ArrayOfProduct xmlns:i="http://www.w3.org/2001/XMLSchema-instance"     xmlns="http://schemas.datacontract.org/2004/07/FirstWebApi.Models">
    <Product>
        <Category>Groceries</Category>
        <Id>1</Id>
        <Name>Tomato Soup</Name>
        <Price>1</Price>
    </Product>
    <Product>
        <Category>Toys</Category>
        <Id>2</Id>
        <Name>Yo-yo</Name>
        <Price>3.75</Price>
    </Product>
    <Product>
        <Category>Hardware</Category>
        <Id>3</Id>
        <Name>Hammer</Name>
        <Price>16.99</Price>
    </Product>
</ArrayOfProduct>
4

3 回答 3

1

确保您的respone发件人urljson格式

于 2013-07-19T11:39:01.433 回答
0

在尝试询问工作中的某个人后,我一定做了不同的事情并收到“无运输”的错误消息。从那里我在这里找到了原因和解决方案

于 2013-07-21T07:47:05.460 回答
0

为了指定json为 dataType,您必须json从端点返回,否则您将收到解析错误,因为json解析器将被显式调用。

Working Demo

Broken Demo

请注意,唯一的区别是端点(html 与 json)。

您也可以尝试删除该dataType属性并让 jQuery 自动计算出来。


由于您的 xml 在语义上是正确的,因此问题必须在您发回的标头中。确保响应的内容类型是“text/xml”

Live Demo

HTML

<script id='xmlData' type='text/html'>
<ArrayOfProduct xmlns:i="http://www.w3.org/2001/XMLSchema-instance"     xmlns="http://schemas.datacontract.org/2004/07/FirstWebApi.Models">
    <Product>
        <Category>Groceries</Category>
        <Id>1</Id>
        <Name>Tomato Soup</Name>
        <Price>1</Price>
    </Product>
    <Product>
        <Category>Toys</Category>
        <Id>2</Id>
        <Name>Yo-yo</Name>
        <Price>3.75</Price>
    </Product>
    <Product>
        <Category>Hardware</Category>
        <Id>3</Id>
        <Name>Hammer</Name>
        <Price>16.99</Price>
    </Product>
</ArrayOfProduct>
</script>

JS

$.mockjax({
  url: '/testXML/',
  responseTime: 0,
  contentType: 'text/xml',
  responseText: $('#xmlData').text()
});

$(document).ready(function () {
    $.ajax({
        url: "/testXML/",
        type: "GET"
    }).done(function(data, textStatus, jqXHR) {
        alert($(data).find('Product:eq(0) > Category').text());
    }).fail(function (jqXhr, textStatus) {
        alert("Request failed: " + textStatus);
    });
});
于 2013-07-19T11:39:02.617 回答