开发者问题收集

如何发送 Ajax POST 请求

2016-06-01
120

我正在使用此代码向我的节点 API 发送 POST 以生成 PDF,我的节点控制台给出了以下错误:

$('#renderPDF').click(function(){
      var request = $.ajax({
        type: "POST",
        url: 'http://localhost:8080/api/v1/generate',
        data: {doc:"<h1>test 123</h1>"},
      });
      request.done(function(data){
        console.log(data);
      });
});

info: TypeError: null is not an object (evaluating 'child.transform') info: info: phantomjs://code/shim.js:157 in transform info:
phantomjs://code/shim.js:138 in read

当我发送 POST(使用 Postman 工具)时,PDF 被呈现并且一切正常。

localhost:8080/api/v1/generate?doc=<h1>testing 123</h1>

我在 POST 请求中做错了什么?

2个回答

也许你需要/可以使用 formData

更轻松地实现它,例如

data = new FormData();
data.append( 'doc', "<h1>test 123</h1>" );

$.ajax({
    url: 'http://localhost:8080/api/v1/generate',
    data: data,
    processData: false,
    type: 'POST',
    success: function ( data ) {
        alert( data );
    }
});
Avraam Mavridis
2016-06-01

我认为您的问题是您将 doc 参数作为 POST 参数发送,当它看起来像查询字符串时,请尝试:

$('#renderPDF').click(function(){
  var request = $.ajax({
    type: "POST",
    url: 'http://localhost:8080/api/v1/generate?doc=<h1>testing 123</h1>',
  });
  request.done(function(data){
    console.log(data);
  });
});

希望它能解决您的问题。

编辑:有关此内容的更多信息。您可能将请求(来自邮递员)作为 POST 请求发送,但发送的值实际上不是 POST 参数,而是查询字符串(如果您愿意的话,可以称为“GET”参数)。

juanlu
2016-06-01