我需要将JSON对象传递给用于WCF调用的javascript / ajax方法。我怎样才能做到这一点?

时间:2011-01-26 19:39:36

标签: jquery ajax json

所以我一直在寻找这种事情的许多不同例子。大多数人使用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中测试了它。

3 个答案:

答案 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库。

另外,请添加您收到的确切错误消息,这将非常有用。