如何从node.js到Ajax检索数据?

时间:2019-04-06 14:55:31

标签: javascript jquery node.js ajax

我正在尝试学习从Ajax向node.js发送/接收数据。我能够从ajax发送数据,但无法接收。无法解决问题。如果有人可以解释我要去哪里错,那太好了。

  

Ajax

$(document).on('submit', '#searchdata', function (e) {
e.preventDefault();
var formData = $(this).serialize();
$.ajax({
 url: location.pathname,
 method: 'POST',
 type: 'POST',
 data: formData,
 processData: false,
 dataType: 'json',
 contentType: 'application/json; charset=utf-8',
 success: function (data) {
                   var ret = JSON.stringify(data);
                   console.log('Success: '+JSON.stringify(data))
               },
               error: function (xhr, status, error) {
                   console.log('Error: ' + JSON.stringify(error));
               },
  });
  });
  

node.js

    var myData = '';
    request.on('data', function (data) {
        myData += data.toString();
    });
 response.writeHead(200, {
             'Content-Type': 'text/json',
             'Access-Control-Allow-Origin' : '*'});
      response.end(myData);
      });

2 个答案:

答案 0 :(得分:1)

我在jQuery Ajax文档中看到以下语句:

  

弃用通知:jqXHR.success(),jqXHR.error()和   从jQuery 3.0开始删除了jqXHR.complete()回调。您可以使用   而是使用jqXHR.done(),jqXHR.fail()和jqXHR.always()。

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax( "example.php" )
  .done(function() {
    alert( "success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "complete" );
  });

我相信您将需要更改与文档中上述类似的代码。

答案 1 :(得分:0)

  1. 您是否已检查要发布的服务器/ api以返回响应(使用邮递员)
  2. 您是否已检查请求的标头。您可能需要添加授权标头(公共api的常见做法)
  3. 您是否已将client_id,app_id或api_key附加到请求中
  4. 您是否已对请求进行身份验证(基本上是2/3点)

2和3应该返回一个响应,无论哪种情况,我都会使用邮递员进行检查。如果邮递员至少应该返回答复。检查标题和http状态标题。如果您收到200的响应,但没有返回内容,则路由或服务器配置可能有问题

Ajax示例 $(document).on('submit','#searchdata',function(e){     e.preventDefault();

//Get form by id
var $form = #("#form_id");

//Form data
var formData = new formData($form);

$.ajax({
    url: 'http://localhost:300/edit/11', //path to api
    method: 'POST',    //Method to use (GET by default)
    data: formData,    //The data to be posted
    dataType: 'json',   //Expected reponse format
}).done(function(res){ 
    //Results here can contain an error - this is common for custom error types
    //Test for custom error assuming in the format res.error
    if( typeof res.error == 'undefined'){
        console.log(res)
    }else{
        //You have an error
    }
}).fail(function(err){
    console.log(err)
})