2014-11-23 112 views
1

我想在我的節點JS項目中使用AJAX,但運行過程中出現的項目後,我看到了以下錯誤:如何在節點js中使用ajax?

TypeError: Object function (w) { 
       if (!w.document) { 
        throw new Error("jQuery requires a window with a document"); 
       } 
       return factory(w); 
      } has no method 'ajax' 

我的代碼是:

      var jq = require('jquery'); 
         jq.ajax({ 
           type: "POST", 
           url: "http://localhost/sms/index.php", 
          }); 
+1

你爲什麼要這樣做? 「在我的nodejs項目中使用ajax」?爲什麼不使用常規的http請求? 'http:// nodejs.org/api/http.html#http_http_request_options_callback'或者其中一個包裝庫? – deitch 2014-11-23 13:55:46

+0

你使用的是什麼版本的jQuery? 1.x不支持非瀏覽器環境。 – Shaun 2014-11-23 13:57:07

+0

@deitch因爲在http模塊中,我必須爲我的php文件定義httpd conf,但我只是想在本地主機中調用php文件。當使用http模塊時出現錯誤:{[Error:connect ECONNREFUSED] code:'ECONNREFUSED', errno:'ECONNREFUSED', syscall:'connect'} cd。 – h3dgh 2014-11-23 14:30:26

回答

2

您可以使用request module(NPM安裝請求):

var request = require('request'); 
request({ 
    method: 'POST', 
    url: 'http://localhost/sms/index.php', 
    json: someJsonObject 
    // or form depending on what http://localhost/sms/index.php accepts, 
    // see request document for more options 
}, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body) 
    } 
}); 
+1

tnx @Ben,我寫下面的代碼,但在我的PHP文件$ _POST是空的,什麼是錯的? var form = { \t number:'test', \t msg:'test', \t}; \t var formData = querystring.stringify(form); \t var contentLength = formData.length; \t REQ({ \t \t頭:{ \t '內容長度':CONTENTLENGTH, \t '內容類型': '應用/ X WWW的窗體-urlencoded' \t}, \t URI:的 'http://本地主機:8080/send_sms/index.php的', \t體:FORMDATA, \t方法: 'POST' \t},功能(ERR,RES,體){ \t \t的console.log( 'res是',re或多個); \t \t console.log('err',err); \t}); – h3dgh 2014-11-24 07:42:05

+1

您可能需要爲表單數據使用'表單',請嘗試form:formData,而不是body:formData。這來自request doc:form - 當傳遞一個對象或查詢字符串時,它將body設置爲查詢字符串表示形式的值,並添加Content-type:application/x-www-form-urlencoded標頭。當傳遞任何選項時,返回一個FormData實例(並通過管道請求)。請參閱上面的「表單」部分 – Ben 2014-11-25 05:35:31