2017-11-28 4 views
1

Ich mache ein Ajax-Gesuch, das Senden unter Javascript-Objekt als Json Parameter zu einer MVC-Aktion akzeptiert:JavaScript-Objekt Objekttyp nur Nummer

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 } 
       } 
      }; 

Mein Problem Typen dieser Eigenschaften geht. Einige sind Eingaben als String, aber dieses Objekt akzeptiert nur Zahlen (ich sehe, wenn ich auf der Leiterplatte schwebe) und gibt null aus, wenn ich eine andere Zeichenfolge als die Zahl eintrage. Warum passiert dies?

I tryed Eigenschaften eines nach dem anderen, wie zu konvertieren:

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

und auch tryed JSON.stringify(), aber in diesem Objekt hat nicht funktioniert ...

+0

Konvertieren erforderlichen Wert mit 'ParseInt()'. – Mamun

+0

Können Sie auch Ihren Formular-HTML-Code einfügen? scheint, als ob Sie den falschen Eingabetyp verwenden. – Fawaz

+0

@ Fawaz: Nein, "val" ** immer ** gibt eine Zeichenfolge für alle Formularsteuerelemente zurück. –

Antwort

0

Warum ist das passiert?

Da der Code sagt es ausdrücklich, eine einstellige + mit:

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

und

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

und so weiter.

Wenn Sie eine unäre + auf eine Zeichenfolge anwenden, wird sie auf eine Zahl gezwungen. Wenn es nicht als gültige Nummer erkannt werden kann, lautet das Ergebnis NaN. (Sie haben gesagt, Sie sehen null, die, dass irgendwann schon sagt, sind Sie auf JSON Serialisierung; NaN zu null umgewandelt wird, wenn es als JSON Serialisierung, da JSON keine NaN Wert hat.)

Wenn Sie möchten, Strings, entfernen Sie die + aus dem Code, der die betreffende Eigenschaft erzeugt.

+0

Vielen Dank, es funktioniert! – Zeynep