Как исправить ошибку TypeError: t имеет значение null при попытке заменить всю <HTML>? - PullRequest
0 голосов
/ 24 января 2019

В настоящее время я пытаюсь заменить всю страницу на AJAX. Я не могу просто перенаправить на другой URL в соответствии с моим назначением по любой причине.

Мой сервер node.js имеет index.pug. Форма отправки предназначена для повторной загрузки той же страницы, но замены всего HTML-файла после обработки запроса POST. Я знаю, что я мог бы просто заменить, но я хотел бы просто сделать мою страницу с любой заменой.

Я пытался заменить его на $ ("body"). Html (res), который не выдает ошибку, но не заменяет то, что мне нужно, и $ ("head"). Html (res ) также выдает ту же ошибку.

Я получаю это, когда пытаюсь использовать $ ("head"). Html (res):

TypeError: t is null

мопс:

doctype html
html
  head
    title Simple Upload Example
    script(src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js' )
    script.
      $(document).ready(function () {
      $('#eventForm').submit(function (e) {
      //Do two sends.
      e.preventDefault();
      var username = ($('#username')[0]);
      var password = ($('#password')[0]);
      var files = ($('#image-input')[0].files);
      // Append the files to the formData.
      var fd = new FormData();
      for (var i = 0; i < files.length; i++) {
      var file = files[i];
      fd.append('photos[]', file, file.name);
      }
      fd.append('password',password.value);
      fd.append('username',username.value);
      $.ajax({
      url: '/',
      data: fd,
      processData: false,
      contentType: false,
      type: 'POST',
      success: function (res) {
      console.log("Success");
      $(document).html(res);
      },
      error: function () {
      console.log("Failure");
      }
      });
      });
      });
  body
    form#eventForm(method='post', enctype='multipart/form-data')
      input#image-input(type='file', accept='image/png, image/jpeg')
      input#username(type='text')
      input#password(type='text')
      input(type='submit')
    h1=message

JS

var express = require('express');
var formidable = require('formidable');
var uuidv5 = require('uuid/v5');
var fs = require('fs');

var app = express();

app.get('/', function (req, res) {
    res.render(__dirname + '/index.pug', {
        message: 'hi'
    });
});

//Create a new ID.
app.post('/', function (req, res) {
    var fields = [];
    var form = new formidable.IncomingForm();
    form.parse(req);

    form.on('fileBegin', function (name, file) {
        file.path = '.' + '/uploads/' + file.name;
    });

    //Push field onto an array
    form.on('field', function (name, value) {
        fields.push('"' + name + '"' + ':' + '"' + value + '"');
    });

    form.on('file', function (name, file) {
        console.log('Uploaded ' + file.name);
    });

    //Convert array into form
    form.on('end', function () {
        var photo_id = uuidv5('http://example.com/hello', uuidv5.URL);
        var str = '{' + fields.toString() + '}'
        var jsonData = JSON.parse(str)

        fs.mkdirSync(__dirname + '/users/' + jsonData.username, { recursive: true }, (err) => {
            if (err) throw err;
        });

        fs.writeFile(__dirname + '/users/' + jsonData.username + '/jsonData.json', str, function (err) {
            if (err) {
                console.log(err);
            }
        });
    });

    res.render(__dirname + '/index.pug', {
        message: 'hiya'
    });
});
app.listen(3000);
...