使用requestbin

时间:2012-04-16 18:42:27

标签: jquery asp.net json

我正在尝试使用以下代码将数据发布到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>

2 个答案:

答案 0 :(得分:3)

可能出现的问题:

  1. 404可能是因为RequestBin过期了网址,而您的网址可能已过期。

  2. 另一个问题可能是JavaScript,它是JSON.stringify而不是JSON.Stringify

  3. RequestBin返回text/plain,您正在使用dataType: "json"。您应该使用dataType: "text"来测试RequestBin。

  4. RequestBin不允许导致CORS: XMLHttpRequest无法加载&#39; ...&#39; No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; ...&#39;因此不允许访问。

  5. 即使你&#34;修复&#34;第1项,第2项和第3项,第4项不会让它发挥作用。

    可能的解决方案是使用PutsReq,它允许CORS,您可以将响应配置为有效的JSON。

    示例PustReq Response Builder:

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

    您的Ajax调用(使用有效的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) }
    });
    

答案 1 :(得分:0)

我不知道这是否与您的问题有关,但为什么要“串化”您发送的数据?

$。AJAX({   类型:“POST”,   网址:“http://requestb.in/1g8nene1”,   contentType:“application / json; charset = utf-8”,   数据:{“name”:“John”},   dataType:“json”,   success:function(msg){alert(“Post Succeeded:”+ msg)},   错误:function(msg){alert(“Post Failed:”+ msg)} });

将它作为普通对象发送,jQuery将处理所有事情。我已经在本地测试中更改了它以查看您的问题,并且响应状态对我来说是200。