0

localhost サイトから 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

jsondataType として指定するにjsonは、エンドポイントから返す必要があります。そうしないと、jsonパーサーが明示的に呼び出されるため、解析エラーが発生します。

Working Demo

Broken Demo

唯一の違いはエンドポイント (html と json) だけであることに注意してください。

属性を削除して、dataTypejQuery に自動的に認識させることもできます。


あなたの 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 に答える