在尝试使用javascript手动格式化JSON数据并失败后,我意识到可能有更好的方法。这是Web服务方法和相关类的代码在C#中的样子:
[WebMethod]
public Response ValidateAddress(Request request)
{
return new test_AddressValidation().GenerateResponse(
test_AddressValidation.ResponseType.Ambiguous);
}
...
public class Request
{
public Address Address;
}
public class Address
{
public string Address1;
public string Address2;
public string City;
public string State;
public string Zip;
public AddressClassification AddressClassification;
}
public class AddressClassification
{
public int Code;
public string Description;
}
该Web服务可以很好地使用SOAP /
XML,但是我似乎无法使用javascript和jQuery得到有效的响应,因为我从服务器返回的消息存在我的手工编码JSON问题。
我不能使用jQuery getJSON
函数,因为该请求需要HTTP POST,因此我改用了较低层的ajax
函数:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://bmccorm-xp/HBUpsAddressValidation/AddressValidation.asmx/ValidateAddress",
data: "{\"Address\":{\"Address1\":\"123 Main Street\",\"Address2\":null,\"City\":\"New York\",\"State\":\"NY\",\"Zip\":\"10000\",\"AddressClassification\":null}}",
dataType: "json",
success: function(response){
alert(response);
}
})
该ajax
函数将提交中指定的所有内容data:
,这就是我的问题所在。如何在javascript中构建格式正确的JSON对象,以便将其插入到ajax
调用中,如下所示:
data: theRequest
我最终将以表格形式从文本输入中提取数据,但现在硬编码的测试数据还可以。
如何构建格式正确的JSON对象以发送到Web服务?
更新:事实证明,我的请求的问题不是TJ指出的JSON格式,而是我的JSON文本不符合Web服务的要求。
这是一个基于WebMethod中代码的有效JSON请求:
'{"request":{"Address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000","AddressClassification":null}}}'
数据应使用JSON编码。您应该对每个输入参数进行单独编码。因为只有一个参数,所以您应该执行以下操作:
首先将您的数据构造为本地JavaScript数据,例如:
var myData = {Address: {Address1:"address data 1",
Address2:"address data 2",
City: "Bonn",
State: "NRW",
Zip: "53353",
{Code: 123,
Description: "bla bla"}}};
然后给作为ajax请求的参数 {request:$.toJSON(myData)}
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://bmccorm-xp/HBUpsAddressValidation/AddressValidation.asmx/ValidateAddress",
data: {request:$.toJSON(myData)},
dataType: "json",
success: function(response){
alert(response);
}
})
您可以使用http://www.json.org/中的另一个版本(JSON.stringify),而不是来自JSON插件的$.toJSON
如果您的WebMethod具有如下参数
public Response ValidateAddress(Request request1, Request myRequest2)
调用data
参数的值ajax
应类似于
data: {request1:$.toJSON(myData1), myRequest2:$.toJSON(myData2)}
要么
data: {request1:JSON.stringify(myData1), myRequest2:JSON.stringify(myData2)}
如果您喜欢其他版本的JSON编码器。
问题内容: 我正在尝试将JSON对象从Javascript / Jquery发送到PHP,并且在控制台中收到错误消息msg。我究竟做错了什么。我是JS和PHP的新手。 jQuery文件: PHP文件 问题答案: 菲尔(Phil)的出色回答,但自从OP标题说 从javascript( 不是jQuery )发送json对象到php 这是使用(原始)javascript的方法,以防万一有人寻找此方法:
过去几天我一直在研究,但我想不出这个问题。 目标:用户使用angular-file-upload表单上传一个文本文件,multer将文件保存到一个临时文件夹。然后发布数据,用户可以在同一页面或重定向页面上看到文件元数据和内容。 问题:在我的POST路由中,我可以console.log(req.file),它显示文件元数据。文件保存到临时文件夹。 我尝试res.send(req.file)、res.
问题内容: 我正在创建json对象以保存数据,然后将其发送到servlet。但是,当我尝试检索该对象并将其内容显示在Java Servlet中时,它抛出一个错误,提示“ JSONObject文本必须在1 [字符2行1]处以’{‘开头。我不知道如何在Java中显示从javascript发送的json对象。这是我在做什么: JavaScript代码: 显示Javascript内容: 使用jQuery
我们正在尝试为现有的java web应用程序创建一个Android应用程序,并尝试访问java JSON数据。 我们对如何将JSON数据发送到请求感到震惊。 我们考虑创建一个java api并作为请求的响应发送。 请提出任何解决方案, 提前谢谢。
问题内容: 我是Python的新手,并且正在使用JSON数据。我想通过向现有JSON对象添加一些键值来动态构建JSON对象。 我尝试了以下方法,但得到了: 问题答案: 您在将对象编码为JSON字符串 之前先 对其进行构建: JSON是 序列化 格式,文本数据 表示 结构。它本身不是那个结构。
问题内容: 我想发送以下JSON文本 到Web服务并读取响应。我知道如何读取JSON。问题是上述JSON对象必须以变量名发送。 我该如何从android做到这一点?创建请求对象,设置内容标头等步骤是什么。 问题答案: Android没有用于发送和接收HTTP的特殊代码,您可以使用标准Java代码。我建议使用Android随附的Apache HTTP客户端。这是我用来发送HTTP POST的代码片段