1

以下のコードを使用して、http://requestb.in/にデータを投稿しようとしています。ただし、引き続き HTTP/1.1 404 Not Found が発生します。以下のコードでデータの JSON 形式を確認しようとしています。

解決策につながる可能性のあるアイデアをありがとう。最初の段落で言及したエラーを見つけるために Fiddler を使用しています。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PostJSON.aspx.cs" Inherits="SimpleJSONPost.PostJSON" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
<script src="Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>    
<script type="text/javascript">    
    $(document).ready(function () {
        $("#button1").click(function () {
            $.ajax({
                type: "POST",
                url: "http://requestb.in/1g8nene1",
                contentType: "application/json; charset=utf-8",
                data: JSON.Stringify({"name": "John"}),
                dataType: "json",
                success: function (msg) { alert("Post Succeeded: " + msg) },
                error: function (msg) { alert("Post Failed: " + msg) }
            });
        });
    });    
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="button1" runat="server" Text="PostJSON" />
    </div>
    </form>
</body>
</html>
4

2 に答える 2

4

考えられる問題:

  1. 404 は、RequestBin が URL を期限切れにし、URL が期限切れになっている可能性があるためです。

  2. もう 1 つの問題は JavaScript にある可能性がありJSON.stringifyますJSON.Stringify

  3. RequestBin が返さtext/plainれ、使用していdataType: "json"ます。dataType: "text"RequestBin に対してテストするために使用する必要があります。

  4. RequestBin が CORS を許可しない原因: XMLHttpRequest を読み込めません '...' 要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません。したがって、オリジン「...」へのアクセスは許可されていません。

1、2、3 を「修正」しても、項目 4 は機能しません。

可能な解決策は、PutsReqを使用することです。これにより、CORS が許可され、有効な JSON になるように応答を構成できます。

サンプル PustReq 応答ビルダー:

response.status = 200;
response.headers['Content-Type'] = 'application/json';
response.body = { 'msg': 'ok' };

Ajax 呼び出し ( YOUR-TOKENを有効な PutsReq トークンに置き換えます):

$.ajax({
    type: "POST",
    url: "https://putsreq.herokuapp.com/<YOUR-TOKEN>",
    contentType: "application/json; charset=utf-8",
    data: JSON.stringify({ "name": "John" }),
    dataType: "json",
    success: function (msg) { alert("Post Succeeded: " + msg) },
    error: function (msg) { alert("Post Failed: " + msg) }
});
于 2014-05-08T02:24:57.163 に答える
0

これがあなたの問題と関係があるかどうかはわかりませんが、なぜ送信データを「文字列化」するのですか?

$ .ajax({type: "POST"、url: "http://requestb.in/1g8nene1"、contentType: "application / json; charset = utf-8"、data:{"name": "John"} 、dataType: "json"、success:function(msg){alert( "Post Succeeded:" + msg)}、error:function(msg){alert( "Post Failed:" + msg)}});

プレーンオブジェクトとして送信すると、jQueryがすべてを処理します。私はあなたの問題を確認するためにローカルテストでそれを変更しました、そして私への応答ステータスは200です。

于 2012-04-16T18:57:42.723 に答える