मेरे पास नोड.जेएस + पग एप्लिकेशन स्टैक है। मैं एक डिलीट रिक्वेस्ट भेज सकता हूं, लेकिन बॉडी के साथ पुट/पोस्ट रिक्वेस्ट में समस्या है। मेरी पग टेबल इस तरह दिखती है

    table.table.table-striped.text-center
        each order in orders
            tr
                td #{order.id}
                td #{moment(order.date).format('DD.MM.yyyy hh:mm:ss')}
                td #{order.total_price} €
                td
                    button.btn.btn-success(onClick="archiveOrder(" + order + ")")
                        i.fa.fa-archive
                td
                    button.btn.btn-danger(onClick="deleteOrder(" + order.id + ")")
                        i.fa.fa-trash-o
        else
            tr
                td(colspan=7) There are no items

मैंने पग में एक स्क्रिप्ट फ़ाइल शामिल की है जिसमें यह सामग्री है:

function deleteOrder(id) {
    $.ajax({
        type: "DELETE",
        url: "/orders/" + id,
        success: function () {
            location.reload()
        }
    });
}

function archiveOrder(order) {
    order.archived = true;
    $.ajax({
        type: "PUT",
        contentType: 'application/json',
        dataType: 'json',
        url: "/orders/" + order.id,
        data: JSON.stringify(order),
        success: function () {
            location.reload()
        }
    });
}

रेंडर ठीक है, हटाएं ठीक काम करता है। मैं उस आदेश को कैसे भेज सकता हूं जिसे मैं जावास्क्रिप्ट फ़ंक्शन में संग्रहित करना चाहता हूं? मैंने onClick="archiveOrder(" + order + ")" और onClick="archiveOrder(#{order})" की कोशिश की पहला उत्पन्न करता है

<button class="btn btn-success" onClick="archiveOrder([object Object])" title="Archive order = hide from list">
  <i class="fa fa-archive"></i>
</button>

तार्किक रूप से यह Uncaught SyntaxError: Unexpected identifier के साथ विफल रहता है क्योंकि [object Object] स्ट्रिंग मुझे लगता है।

दूसरे प्रयास का परिणाम orders:23 Uncaught SyntaxError: Invalid or unexpected token

मैं पग के लूप से बाकी एंडपॉइंट में ऑब्जेक्ट order कैसे भेज सकता हूं?

1
Zavael 11 सितंबर 2020, 12:52

1 उत्तर

सबसे बढ़िया उत्तर

HTML वस्तु को प्रस्तुत नहीं कर सकता। तो आप ऑब्जेक्ट को से स्टिंग में बदल सकते हैं JSON.stringify ()

button.btn.btn-success(onClick="archiveOrder(" + JSON.stringify(order) + ")")

आप अपने मार्कअप में एक JSON स्ट्रिंग देखेंगे। इसके विपरीत JSON.parse() इसे किसी ऑब्जेक्ट में वापस पार्स करने के लिए।

1
kmgt 11 सितंबर 2020, 16:24