2016-06-01 17 views
0

Ich verwende diesen Code senden POST zu meinem Knoten API zu senden PDF, meine Knoten Konsole gibt mir diese Fehler zu erzeugen:Wie eine Ajax-POST-Anfrage

$('#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

Als ich senden Ein POST (mit dem Postman-Tool), das PDF wird gerendert und alles funktioniert.

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

Was mache ich bei meiner POST-Anfrage falsch?

+0

diese Tags innerhalb der Daten wahrscheinlich einige Probleme machen .. –

+0

der Unterschied zwischen Ihrer Ajax-Post und der URL Dir auf dem Laufenden ist, dass die URL angezeigt GET params versucht Art von POST zu drehen – Felix

+0

Das Problem könnte in der Tat GET sein mit phantomjs ... hast du versucht es mit einem echten Browser von Hand zu testen? Ich hatte zufällige Probleme mit Phantomjs in der Vergangenheit. – CaffeineAddiction

Antwort

0

Wahrscheinlich müssen Sie/sie erreichen kann leichter mit formData

z.B.

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); 
    } 
}); 
0

Ich denke, Ihr Problem ist, dass Sie die doc Parameter als POST Parameter senden, wenn es wie seine eine Abfragezeichenfolgeflag aussieht, versuchen:

$('#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); 
    }); 
}); 

Hoffen, dass es Ihr Problem löst.

EDIT: mehr Infos dazu. Sie können die Anfrage (vom Postboten) als eine POST-Anfrage senden, aber die gesendeten Werte sind nicht wirklich POST-Parameter, sie sind Querystrings ("GET" -Parameter, wenn Sie so wollen).