簡體   English   中英

發布請求-以json格式發送數據

[英]Post request - sent data in json format

我有一個學習項目。 使用帶有輸入和按鈕的簡單表單。 需要將輸入值保存到JSON文件中。 HTML

<form action="/" method="post" id="emailForm">
    <input type="email" id="email" name="email" placeholder="Enter email for newsletter">
    <button type="submit" id="subscribe" value=""><i class="fas fa-chevron-right"></i></button>
</form>

JS將數據轉換為JSON格式

$('#subscribe').on('click', function (event) {
        // prevent from reloading the page
        event.preventDefault();
        // checking validity of input
        if (ValidateEmail()) {
            var formData = $("#emailForm").serializeArray();
            $.each(formData, function () {
                if (jsonData[this.name]) {
                    if (!jsonData[this.name].push) {
                        jsonData[this.name] = [jsonData[this.name]];
                    }
                    jsonData[this.name].push(this.value || '');
                } else {
                    jsonData[this.name] = this.value || '';
                }

                jsonData = JSON.stringify(jsonData);

            });

            console.log(jsonData);


            $.ajax({
                url: "app.js",
                type: "POST",
                dataType: 'json',
                data: jsonData

            }); 
            alert('Email saved!');
            return jsonData;

        } else {
            console.log('email not saved');
        }
    });

app.js

const fs = require('fs');

fs.readFile('email.json', (err, data) => {  
    if (err) throw err;
    let email = JSON.parse(data);
    console.log('original' + email);
});
fs.writeFileSync('email.json', jsonData);  
console.log('done');

問題出在訪問文件app.js-首先,它被chrome阻止了

CORS策略已阻止從源“ null”訪問“ file:/// D:/HTML/Try%20it/acad/master/app.js”處的XMLHttpRequest:協議方案僅支持跨域請求: HTTP,數據,chrome,chrome擴展名,https

嘗試使用node.js運行本地服務器,並收到錯誤405(不允許使用方法)。

您的app.js只是一個腳本,它開始讀取文件,通過阻塞線程來寫入文件,打印“完成”並關閉。 沒有HTTP服務器,沒有請求處理...

您首先需要設置一個HTTP服務器,這可以通過本機http node.js模塊或其他模塊(例如express )完成,以便偵聽事件並在調用服務器時觸發代碼。

此外, http-server是由快速呈現一些文件,試圖POST到一個文本文件明明什么都不做,如果你要GET它,你只會讓你的文本文件,這對你沒有好處。

因此,根據您的家庭作業約束,您需要檢查httpexpress文檔,設置有效的HTTP服務器,然后在該調用中正確寫入文件。

(提示:請勿在node.js中使用...Sync函數,除非您真的知道自己在做什么,並檢查什么是“異步”函數,否則將需要它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM