Мне нужно передать объект JSON в метод javascript / ajax для вызова WCF.Как я могу это сделать? - PullRequest
4 голосов
/ 26 января 2011

Итак, я искал много разных примеров такой вещи.Большинство людей используют сериализатор / десериализатор JSON или метод stringify.Я пытался попробовать нечто подобное, и, к сожалению, я всегда получаю сообщение об ошибке из консоли отладчика Google Chrome, в котором говорится: Uncaught 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");

}

Я хочу, чтобы person был объектом 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 ]

2 голосов
/ 27 января 2011

Итак, я наконец-то понял ответ на свой вопрос. Причиной того, что фактическая передача параметров не работала, были одинарные кавычки. Когда я объявил свой фактический объект 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 голос
/ 26 января 2011

хорошо

 contentType: "application/json",
 data: person,
 beforeSend: ....

Будет ли это работать?

Начиная с http://api.jquery.com/jQuery.ajax/, данные могут быть объектом или строкой.

0 голосов
/ 26 января 2011

Похоже, в вашей службе WCF может быть ошибка, не найденная JavascriptSerializer. Вы компилируете на одной машине и разворачиваете ее на другой? Они могут не синхронизироваться с библиотекой .NET.

Также, пожалуйста, добавьте точное сообщение об ошибке, которое будет очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...