所以我一直在寻找这种事情的许多不同例子。大多数人使用JSON序列化器/反序列化器或stringify方法。我试图尝试类似的事情,不幸的是我总是从谷歌的Chrome调试器控制台收到错误说: 未捕获的ReferenceError:JavaScriptSerializer未定义或类似。
下面是我尝试使用这些信息进行PUT操作的实际方法。
function insertjsonMyUser(person) {
document.write("Inside the parameter based insertion method<br/>");
alert("Entered the method, right before the ajax call");
$.ajax({
type: "PUT",
url: 'http://localhost/MyService/Service.svc/json/CreateUserInfo',
contentType: "application/json",
data: {"User" : person.User ,"Pword" : person.Pword,"FName" : person.FName,"LName" : person.LName,"JobTitle" : person.JobTitle,"CompanyName" : person.CompanyName,"CompanyBranch" : person.CompanyBranch,"PhoneNum" : person.PhoneNum,"Email" : person.Email},
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'default default');
}
});
alert("The user has been created according to your specifications");
}
我想使用我在数据下使用的指定键来成为JSON对象。我已成功完成了类似的方法,但我不想使用硬编码的JSON对象,例如:
{"User" : "Zuser" ,"Pword" : "password","FName" : "firstname","LName" : "lastname","JobTitle" : "jobtitle","CompanyName" : "companyname","CompanyBranch" : "companybranch","PhoneNum" : 3123123123,"Email" : "email"}
我在硬编码版本中使用的JSON对象是上面的对象。使用stringify或serialize方法有什么我缺少的吗?还有,比我在搜索时间里错过的那些更容易吗?
最后,我正在运行Windows 7 Enterprise,使用IIS托管,并使用Visual Studio 2010进行编辑。我的服务很好。我成功地在Fiddler中测试了它。
答案 0 :(得分:2)
所以我终于找到了自己的问题的答案。实际参数传递不起作用的原因是单引号。当我声明我的实际JSON对象时,我将其声明为:
{"User" : "Zuser" ,"Pword" : "password","FName" : "firstname","LName" : "lastname","JobTitle" : "jobtitle","CompanyName" : "companyname","CompanyBranch" : "companybranch","PhoneNum" : 3123123123,"Email" : "email"}
我实际上需要将其声明为:
'{"User" : "Zuser" ,"Pword" : "password","FName" : "firstname","LName" : "lastname","JobTitle" : "jobtitle","CompanyName" : "companyname","CompanyBranch" : "companybranch","PhoneNum" : 3123123123,"Email" : "email"}'
我想可以将单引号附加到方法本身的实际对象上,但你可以像我一样做实际的声明来解决问题。
答案 1 :(得分:1)
好吧
contentType: "application/json",
data: person,
beforeSend: ....
这会有用吗?
从http://api.jquery.com/jQuery.ajax/,数据可以是对象或字符串。
答案 2 :(得分:0)
看起来您的WCF服务中可能没有找到JavascriptSerializer的错误。你在一台机器上编译并将其部署到另一台机器上吗?他们可能不会同步.NET库。
另外,请添加您收到的确切错误消息,这将非常有用。