1

一部の入力の変数をオブザーバブルとして宣言しようとしていますが、正しく機能していません。フォームは正しく読み込まれますが、フォームを送信すると、値は単なる JavaScript コードになります。

フォームはこちら

<div data-bind="visible: shippingBillingContact()">
    <table border="1">
        <tr><td>Full Name</td><td><input type="text" data-bind='value: fullName'/></td>
        <tr><td>Address Line 1</td><td><input type="text" data-bind='value: addressLine1'/></td>
        <tr><td>Address Line 2</td><td><input type="text" data-bind='value: addressLine2'/></td>
        <tr><td>City</td><td><input type="text" data-bind='value: city'/></td>
        <tr><td>State</td><td><input type="text" data-bind='value: state'/></td>
        <tr><td>ZIP</td><td><input type="text" data-bind='value: ZIP'/></td>
        <tr><td>Email</td><td><input type="text" data-bind='value: email'/></td>
    </table>
    <button data-bind="click: back">Go Back</button>
    <br>
    <button data-bind="click: submitOrder">Submit</button>
</div>

これは、変数を宣言するビューモデルです。それらに対して他の処理は行われません

function EntryViewModel(fullName, addressLine1, addressLine2, city, state, ZIP, email) {
    var self = this;
    self.newItem = ko.observable("");
    //fullName through email are the items giving me problems
    self.fullName = ko.observable();
    self.addressLine1 = ko.observable();
    self.addressLine2 = ko.observable();
    self.city = ko.observable();
    self.state = ko.observable();
    self.ZIP = ko.observable();
    self.email = ko.observable();

    //these are used to show/hide divs (work properly)
    self.cartContents = ko.observable(true);
    self.shippingBillingContact = ko.observable(false);
    self.orderComplete = ko.observable(false);

    //start the array with some items
    self.itemNumbers = ko.observableArray([

    ]);

    //the values for ItemNumbers, quantities, prices, names are all looked up
    //I omitted this code because it in no way interacts with the customer information

    $.getJSON("/orders/submit_order/" + itemNumbers + "/" + quantities + "/" + prices + "/" + productNames + "/" + self.fullName + "/" + self.addressLine1 + "/" + self.addressLine2 + "/" + self.city + "/" + self.state + "/" + self.ZIP + "/" + self.email,function(data) {
            if(data.check == "success"){
                self.shippingBillingContact(!self.shippingBillingContact()); //hide the shipping form
                self.orderComplete(!self.orderComplete()); //show the order complete form and display the order
            }
            else{
                alert('Price Mismatch. If you believe this was an error please re-add the items');
                self.cartContents(!self.cartContents());
                self.shippingBillingContact(!self.shippingBillingContact()); //hide the shipping form
            }
        });

したがって、URLは次のように表示されます。ご覧のとおり、商品情報は問題なく表示されていますが、顧客情報は大量の JavaScript です。

orders/submit_order/1/1/5.99/ItemA/function%20d()%7Bif(0%3Carguments.length)%7Bif(!d.equalityComparer%7C%7C!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return%20this%7Db.r.Wa(d);return%20c%7D/function%20d()%7Bif(0%3Carguments.length)%7Bif(!d.equalityComparer%7C%7C!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return%20this%7Db.r.Wa(d);return%20c%7D/function%20d()%7Bif(0%3Carguments.length)%7Bif(!d.equalityComparer%7C%7C!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return%20this%7Db.r.Wa(d);return%20c%7D/function%20d()%7Bif(0%3Carguments.length)%7Bif(!d.equalityComparer%7C%7C!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return%20this%7Db.r.Wa(d);return%20c%7D/function%20d()%7Bif(0%3Carguments.length)%7Bif(!d.equalityComparer%7C%7C!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return%20this%7Db.r.Wa(d);return%20c%7D/function%20d()%7Bif(0%3Carguments.length)%7Bif(!d.equalityComparer%7C%7C!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return%20this%7Db.r.Wa(d);return%20c%7D/function%20d()%7Bif(0%3Carguments.length)%7Bif(!d.equalityComparer%7C%7C!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return%20this%7Db.r.Wa(d);return%20c%7D

次のバリエーションも試しましたが、どちらも機能しませんでした

self.fullName = ko.observable("");
self.fullName = ko.observable(fullName);
4

1 に答える 1