Новичок Как отправить информацию Json с помощью scriptsharp в веб-сервис - PullRequest
2 голосов
/ 13 октября 2011

Я изменил пример демонстрации, чтобы попытаться отправить объект json, а не строку. Веб-сайт видит в нем строку значений [объект], а не текст Json. Что мне нужно изменить.

namespace DemoScript {
// [Imported]
// [IgnoreNamespace]
public sealed class Person 
{
    public string FirstName;
    public string LastName;
}

[GlobalMethods]
internal static class HelloPage {

    static HelloPage() {
        // Add script that runs on startup as the script is loaded into
        // the page

        Element helloButton = Document.GetElementById("helloButton");

        Person p = new Person();

        helloButton.AddEventListener("click", delegate(ElementEvent e) {
            InputElement nameTextBox = Document.GetElementById("nameTextBox").As<InputElement>();

            p.FirstName = nameTextBox.Value;
            p.LastName = "Surname";

            XmlHttpRequest xhr = new XmlHttpRequest();
//          xhr.Open(HttpVerb.Get, "/HelloService.ashx?name=" +   nameTextBox.Value.EncodeUriComponent());
            xhr.Open(HttpVerb.Get, "/HelloService.ashx?name=" + p);

            ...
        }
    }
}

Если я передаю p.FisrtName, все работает как положено.

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Сначала вам нужно JSON кодировать ваш объект. В скрипте # собственный JSON сопоставлен с System.Serialization.Json, который имеет методы Stringify() и Parse().

Документация по нативному JSON: https://developer.mozilla.org/En/Using_native_JSON.

Для поддержки браузеров без встроенного JSON вы можете включить этот популярный скрипт: https://github.com/douglascrockford/JSON-js.

0 голосов
/ 14 октября 2011

Спасибо, DuckMaestro, теперь он работает.

На случай, если это пригодится другому новичку, изменения кода:

p.FirstName = nameTextBox.Value;
p.LastName = "Surname";
XmlHttpRequest xhr = new XmlHttpRequest();
string text = Json.Stringify(p);
xhr.Open(HttpVerb.Get, "/HelloService.ashx?name=" + text);
...