繁体   English   中英

在node.js中将外部json用作玉器

[英]Using external json to a jade in node.js

如何将Json对象从XMLHttpRequest传递到我的Jade文件? 仅显示一个空白页,并且服务器正在为get方法发送500个内部错误。

var express = require('express');
var router = express.Router();
var XMLHttpRequest = require("XMLHttpRequest").XMLHttpRequest;

/* GET home page. */
router.get('/:id', function (req, res) {
    var id = req.params.id;
    getJSON('/pros/' + id, function (data) {
        res.render('consultProfessionnal', { prof:JSON.stringify(data)});
    }, function (status) {
        alert('Something went wrong.');
    });
});

module.exports = router;

var getJSON = function (url, successHandler, errorHandler) {
    xhr = new XMLHttpRequest();
    xhr.open('get', url, true);
    xhr.responseType = 'json';
    xhr.onreadystatechange = function () {
        var status = xhr.status;
        if (request.readyState === 4 && status === 200) {
            successHandler && successHandler(xhr.response);
        } else {
            errorHandler && errorHandler(status);
        }
    };
    xhr.send();
};

这是我发送json对象的玉文件:

extends layout
block content

    .container()
        #viewItem
            if prof.sexe==1
                a
                  img.img-responsive(src='https://cdn2.iconfinder.com/data/icons/ios-7-icons/50/user_male2-128.png', alt='', style='padding-left:60px;')
            else if prof.sexe==0
                a
                  img.img-responsive(src='https://cdn0.iconfinder.com/data/icons/futurama/128/Brainslug.png', alt='', style='padding-left:60px;')
            else
                a
                  img.img-responsive(src='https://cdn2.iconfinder.com/data/icons/ios-7-icons/50/user_female2-128.png', alt='', style='padding-left:60px;')

            h2= prof.prenom + ' ' + prof.nom
            h4.space= 'Speciality : ' + prof.specialite

            if prof.sexe==1
              h4= 'Sexe : Male'
            else if prof.sexe==0
              h4= 'Sexe : Other'
            else
              h4= 'Sexe : Female'
            h4= 'Total visit : ' + prof.nbreTotal
            h4= 'Total patient : ' + prof.nbrePatient

            hr
            h3 2014 Patient(s)
            hr
            each visite in prof.patient2014        
                li= visite.prenom + ' ' + visite.nom

            button(
              type='submit'
              style='width: 25px; height: 25px; background-color: black;'
              id=prof._id
              onclick="alerted()"
            )

    script(src='/stylesheets/js/jquery.js')
    script(src="../javascripts/script.js")
    script(src='/stylesheets/js/bootstrap.min.js')

问题在这里: getJSON('/pros/' + id,

在浏览器中,相对URL将解析为{protocol}:// {domain)。{tld} {port?} {relative url}协议,域,TLD和端口均基于页面。

但是,在服务器上没有页面,因此您需要手动解析URL。

因此,要解决该问题,可以将其更改为getJSON('http://' + req.headers.host + '/pros/' + id,它应该可以工作(或您要解析主机的任何其他方式)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM