2013-04-11 112 views
0

我想從Express.js發回JSON到客戶端,但我不能讓它工作。Epress.js和AJAX,從服務器發送JSON到客戶端

路由/ editor.js內

exports.save = function(req, res){ 
    fs.readFile(__dirname + "/../public/index.html", function (err, data) { 
     if (data == oldhash) { 
      res.json({ r: 'no' }) 
     } 
     else { 
      res.json({ r: 'yes'}) 
     } 
    }); 
}); 

公共/ JavaScript的/ test.js

$(".save").click(function(event) { 
     event.preventDefault(); 

     $.ajax({ 
      url: 'http://localhost:3000/save', 
      data: r, 
      type: 'GET', 
      success: function(r) { 
      if(r == 'yes') { 
       $('#echoResult').append('<p>yes</p>'); 
      } 
      else { 
       $('#echoResult').append('<p>no</p>'); 
      } 
      } 
     }); 

    }); 

,然後相應地是來自服務器的響應,附加的權利HTML。

我在這裏錯過了什麼?我看到的所有AJAX示例都沒有太多幫助。

任何建議將更受歡迎。

編輯

我得到這個錯誤在客戶端 - >未捕獲的ReferenceError:R不是定義

+0

定義「無法使其工作」。另外,你的'fs.readFile'代碼缺少錯誤處理,所以如果發生錯誤,你不會知道它。 – robertklep 2013-04-11 09:38:26

+0

你是對的,我忘了提及這個錯誤。檢查更新的帖子。 – giokokos 2013-04-11 09:45:54

+0

'r'沒有被定義似乎沒有道理。嘗試在客戶端代碼中設置一個'error'處理程序。 – robertklep 2013-04-11 09:59:21

回答

1

客戶端錯誤可以解決這樣的:

$(".save").click(function(event) { 
    event.preventDefault(); 

    $.ajax({ 
     url: 'http://localhost:3000/save', 
     type: 'GET', 
     success: function(data) { 
     if(data.r == 'yes') { 
      $('#echoResult').append('<p>yes</p>'); 
     } 
     else { 
      $('#echoResult').append('<p>no</p>'); 
     } 
     } 
    }); 

}); 

data屬性在以r爲參數的成功回調中。

沒有關於你如何使用快遞的更多細節,我不能多說服務器代碼。

+0

工作。謝謝! – giokokos 2013-04-11 10:55:47

相關問題