Тип свойства объекта javascript принимает только число

1

Я делаю запрос Ajax Post, отправляя ниже объект Javascript как параметр Json для действия MVC:

 var productName, exchangeName, productCode, stockCode;
 var categoryID, brandID, stockAmount, state, shippingWeight;

 var sendinfo = 
            {
                "pcb": {
                    "ProductViewModel": {
                        "ProductName": + $('#ProductViewModel_ProductName').val()
                        "ProductCode": + $('#ProductViewModel_ProductCode').val(),
                        "StockCode": +$('#StockViewModel_StockCode').val(),
                        "StockAmount": +$('#StockViewModel_StockAmount').val(),
                        "ShippingWeight": +$('#ProductViewModel_ShippingWeight').val(),
                        "State": +state
                    },
                    "CategoryViewModel": { "Kategori": +categoryID },
                    "BrandViewModel": { "BrandName": +brandID },
                    "ExchangeViewModel": { "ExchangeName": +exchangeName }
                }
            };

Моя проблема связана с типом этих свойств. Некоторые из них предназначены для ввода в качестве строки, но этот объект принимает только числа (я вижу, когда я наводил на pcb), и выводит значение null при вводе строки, отличной от числа. Почему это происходит?

Я попытался преобразовать свойства один за другим как:

string($('#StockViewModel_StockCode').val())

а также попробовал JSON.stringify(), но не работал внутри этого объекта...

  • 0
    Преобразуйте требуемое значение с помощью parseInt() .
  • 0
    Вы также можете вставить свой HTML-код формы? Похоже, вы используете неправильный тип ввода.
Показать ещё 1 комментарий
Теги:
object
model-view-controller
types

1 ответ

0
Лучший ответ

Почему это происходит?

Потому что код явно сообщает об этом, используя unary +:

"ProductName": + $('#ProductViewModel_ProductName').val()
// ------------^

а также

"CategoryViewModel": { "Kategori": +categoryID }
// --------------------------------^

и так далее.

Когда вы применяете унарный символ + к строке, он принуждается к числу. Если он не может быть признан допустимым числом, результатом будет NaN. (Вы сказали, что видите null, что говорит о том, что в какой-то момент вы сериализуете JSON, NaN преобразуется в null при сериализации как JSON, поскольку JSON не имеет значения NaN.)

Если вам нужны строки, удалите + из кода, создающего соответствующее свойство.

  • 0
    Большое спасибо, это работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню