【问题标题】:I need some help getting parameters to go through with my AJAX call我需要一些帮助来获取参数以通过我的 AJAX 调用
【发布时间】:2022-01-18 23:45:11
【问题描述】:

我正在使用 ajax 调用我的数据库以获取一些数据。我尝试将其限制为特定的 ID。我让后端工作。当我访问特定的 localhost url 或从 Postman 调用它时,它可以工作。然后我得到预期值。但是,当我尝试使用 AJAX 从我的客户那里拨打电话时,我什么也得不到。我遇到了一个有时会起作用,有时却不起作用的事情。

const GetUserById = (id) => {
    let url = "/Users/1";
    $.get(url, (gotUser) => {
        alert(gotUser.id);
    })
}

我有这个方法,我只是硬编码到 /Users/1 以进行测试。当我在邮递员中调用它或转到 localhost:8080/Users/1 时,我得到了我期望的东西。然而在这里它根本没有去任何地方。

app.get("/Users/:id", (request, response) => {
    let sqlCode = "select Id, Username, [Password], Credits from Users Where Id = " + request.params.id;

    sql.query(connString, sqlCode, (error, result) => {

        if (error) {
            console.log(error);
        }
        else {
            response.json(result);
        }
    });
});

服务器端,如果这很有趣的话。

编辑:添加了这样的尝试捕获。它甚至没有抓住。它到达 $.get(url, (gotUser) => { 的行,然后它走到函数的末尾并且没有得到任何东西。

 try {
        $.get(url, (gotUser) => {
            alert(gotUser.id);
        })
    } catch (error) {
        console.log(error);
    }

【问题讨论】:

  • GetUserById 怎么称呼?向 Ajax 调用添加错误处理程序。
  • 调试时会发生什么?浏览器控制台上是否有任何错误?在调试工具中,是否发出了 AJAX 请求?服务器的响应是什么?你确认这个函数被调用了吗?
  • 现在添加了一个编辑@epascarello 和大卫,我没有收到任何控制台错误或任何东西。最奇怪的部分是我得到了我在其他地方所期待的数据,除了这个电话。 David 该函数在另一个函数中被调用。
  • 这不是你会得到错误的方式......$.get(...).fail(function( jqXHR, textStatus, errorThrown ) { console.error(textStatus, errorThrown); });
  • 我问过一次,我再问一次,GetUserById 怎么叫?

标签: javascript jquery node.js ajax express


【解决方案1】:

处理 ajax 请求的一个典型问题是 CORS。在您的情况下,一个快速解决方法是在响应标头中指定允许来源,如下所示:

response.header("Access-Control-Allow-Origin", "*");
response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

以更一般的方式,您可能需要在应用程序级别指定它,或使用任何包来处理它(cors)。
编辑---

app.get("/Users/:id", (request, response) => {
response.header("Access-Control-Allow-Origin", "*");
response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

    let sqlCode = "select Id, Username, [Password], Credits from Users Where Id = " + request.params.id;

    sql.query(connString, sqlCode, (error, result) => {

        if (error) {
            console.log(error);
        }
        else {
            response.json(result);
        }
    });
});

【讨论】:

  • 谢谢您的回答。这是在服务器端完成的吗?
  • 是的,刚刚编辑了答案以适合您的代码。如果它有效,请不要忘记将其标记为已接受的答案并进行投票,以便其他人发现它更容易并且我们不会收到重复的问题。
【解决方案2】:

如果是 cors 问题,请尝试以下方法

var cors = require('cors');
    
app.get("/Users/:id",cors(), (request, response) => {
            let sqlCode = "select Id, Username, [Password], Credits from Users Where Id = " + request.params.id;
        
sql.query(connString, sqlCode, (error, result) => {
        
     if (error) {
                    console.log(error);
                }
                else {
                    response.json(result);
                }
            });
        });

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 2012-01-05
  • 2011-02-27
相关资源
最近更新 更多