【问题标题】:POST Json data using Java script使用 Javascript 发布 Json 数据
【发布时间】:2014-01-25 13:53:18
【问题描述】:

我有一个 Java sn-p 代码已经实现如下:

          //some logic above

            JSONObject json = new JSONObject();

            try {

                    json.put("name", "myname");

                    json.put("address","myaddress");


                  List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

                  nameValuePairs = Utils.addEmpName(nameValuePairs);

                  nameValuePairs = Utils.addEmpAddress(nameValuePairs);


                  nameValuePairs.add(new BasicNameValuePair(

                            "myjsondata",

                            jsondata.toString());

                  ....

               httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
           }

它向我的服务器发出 POST 请求并发送 JSON 数据。

我的问题是如何在 Javascript 中执行相同的操作。我知道如何构造 JSON 数据,但就 nameValuePairs 而言,谁能告诉我如何通过 javascript 将它们作为我的 JSON 正文发送?

我的 Javascript 代码目前在 Javascript 中看起来像这样

var data= { "name":"myname", "address" : "myaddress" };            
var xhr = new XMLHttpRequest();

xhr.open("POST",my_url,true);
xhr.setRequestHeader("Content-type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(data));

我需要帮助来编写nameValuePairs 部分以构造 json 正文

【问题讨论】:

    标签: java javascript json


    【解决方案1】:

    几乎任何现代 JavaScript 框架(如 jQuery 或原型)都有非常简单的方法来向/从服务器发送/接收 json(-like) 对象

    更新:

    jQuery:

    var d = { "aa":"bbbbb", "xxx":"yyyy" };
    $.ajax({ 
      url:'http:yourserver.com/your_action',
      data:d
    });
    

    原型:

    var d = { "aa":"bbbbb", "xxx":"yyyy" };
    new Ajax.Request( 'http:yourserver.com/your_action', { parameters:d } );
    

    您可以自定义成功发送、失败等操作。请参阅http://api.jquery.com/jQuery.ajax/http://api.prototypejs.org/ajax/Ajax/Request/

    【讨论】:

    • 你能举个例子吗?
    • 是的,但是如何发送namevaluepairs..请参阅上面的Java代码..我还必须发送EmpName和'EmpAddress`。这也是 URL 编码的实体。请告诉我该怎么做
    • 不确定您的确切意思...var d = { "EmpName":"EmpName value", "EmpAddress":"EmpAddress value" }; 可能会这样做
    【解决方案2】:

    您应该使用JQuery 而不是手动处理 XHR 请求。

    您可以使用$.ajax()$.post() 函数。

    $.post( my_url, { "name":"myname", "address" : "myaddress" });
    

    已编辑:要传递自定义 HTTP 标头,请使用 $.ajax() 而不是 $.post()。尽管您引用的标头使用标准标头和 JQuery 应该检测并自动将其添加到上述请求中。无论如何,您可以使用以下代码 sn-p 使用 $.ajax() 来实现相同的目的。

    $.ajax({
        url: my_url,
        type: 'post',
        data: { "name":"myname", "address" : "myaddress" },
        headers: {
            "Content-type": "application/json;charset=UTF-8"
        },
        dataType: 'json',
        success: function (data) {
            console.info(data);
        }
    });
    

    【讨论】:

    • 是的,没关系。我的问题是如何通过 javascript 将 nameValuePairs 作为 json body 发送。我的请求需要我发送 headers 和 json 数据以及 namevaluepairs
    • 我熟悉java代码..我需要一些帮助来形成javascript代码,因为我不能使用java
    • 您可以在 JQuery ajax 函数中传递自定义 HTTP 标头。
    • 如何发送namevaluepairs..见我上面的Java代码..我还必须发送EmpName和'EmpAddress`。这也是 URL 编码的实体。请告诉我该怎么做
    猜你喜欢
    • 2016-11-07
    • 2021-12-04
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    相关资源
    最近更新 更多