Как преобразовать переменные в JSON? - PullRequest
5 голосов
/ 26 апреля 2011

Я хочу отправить данные json в ajax, но как преобразовать переменные в json или преобразовать массив в json?

$(".confirm_order").click(function(event) {
    event.preventDefault();

    var street = $("#street").val();
    var location = $("#location").val();
    var number = $("#number").val();

    var f = ???

            $.ajax({
            type: 'post',
            url: "/orders",
            dataType: "json",
            data: f,
            success: function (l) { 
                alert("Done");
            }
            });
});

Ответы [ 6 ]

8 голосов
/ 26 апреля 2011

Если вы действительно хотите преобразовать данные в JSON, вам нужно создать объект или массив и использовать JSON.stringify (доступно в более новом браузере и может быть загружено из здесь ):

var f = JSON.stringify({street: street, location: location, number: number});

, но вы не можете просто установить атрибут data на f.Вы должны назначить его другой переменной:

data: {data: f}

Это создаст параметры POST следующим образом:

data={"number":"value of number","location:...}

Однако здесь нет причин для создания JSON.Я бы отправил значения как обычные параметры сообщения.Для этого вы просто создаете объект, как указано выше, и присваиваете ему data:

data: {street: street, location: location, number: number}

Это создаст параметры POST:

street=valueofstreet&location=valueoflocation&...

Это будет проще, если вы ненужно проанализировать JSON на стороне сервера.

3 голосов
/ 26 апреля 2011

Если вы хотите отправить запрос в формате JSON на сервер, вы можете указать правильный тип содержимого для этого запроса, а затем использовать метод JSON.stringify:

var street = $('#street').val();
var location = $('#location').val();
var number = $('#number').val();

$.ajax({
    type: 'post',
    url: '/orders',
    dataType: 'json',
    data: JSON.stringify({ street: street, location: location, number: number }),
    contentType: 'application/json; charset=utf-8',
    success: function (l) { 
        alert("Done");
    }
});

.Тело POST:

{ street: 'foo', location: 'bar', number: 'baz' }

Очевидно, что серверный скрипт, который вы отправляете этому AJAX, должен быть способен обрабатывать и анализировать строки JSON.

1 голос
/ 26 апреля 2011
    var f = {}
    f['street'] = $("#street").val();
    f['location'] = $("#location").val();
    f['number'] = $("#number").val();
0 голосов
/ 26 апреля 2011

попробуйте это. значения будут заменены соответственно

{street : street,location : location, number : number}

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

Используйте JSON.stringify из json2.js

Не забудьте указать contentType: 'application/json' в вашем объекте конфигурации.

0 голосов
/ 26 апреля 2011
var f = {
        "street": street,
        "location": location,
        "number": number
        };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...