【问题标题】:Using external json to a jade in node.js在 node.js 中将外部 json 用于玉石
【发布时间】:2015-01-22 17:35:23
【问题描述】:

如何将 Json 对象从 XMLHttpRequest 传递到我的玉文件?只显示一个空白页面,服务器正在为 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')

【问题讨论】:

  • 你也会把你的玉文件发过来吗?
  • 您正在以尴尬的方式混合客户端和服务器代码。这段代码在哪里运行?
  • 我刚刚添加了翡翠,它从一个快速应用程序中运行,我必须调用我的 REST 服务才能在翡翠网站上打印我的数据
  • 我的服务运行良好,因为当我在控制台中打印它们时它运行良好。我的问题是检索它们以通过不同的路线传递它...
  • 我最好的猜测是getJSON('/pros/' + id, 在浏览器中测试时工作正常,但在服务器上失败。服务器不知道如何处理相关请求。所以它需要一个getJSON('http://mydomain.tld/pros/' + id,。

标签: javascript node.js mongodb express xmlhttprequest


【解决方案1】:

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

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

但是服务器上没有页面,所以需要手动解析url。

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

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多