2016-05-14 35 views
0

我想要從客戶端到後端進行ajax調用。我從成功函數中獲得成功的調用,但是,我無法理解如何從服務器獲取數據以從客戶端返回。AJAX調用並獲取節點中的返回數據

目前我的錯誤嘗試使用res.send是:

Error: Can't set headers after they are sent. 

AJAX

function getProfessorResults() { 
     var textData = $('#inputsm').val(); 

     var data = {user:"[email protected]"}; 
     $.ajax({ 
      url: 'http://localhost:3000', 
      data: { theme: "somevalue", snippet: { name: "somename", content: "somevalue" } }, 
      method: 'POST', 
      async: false, 
      cache: false, 
      timeout: 5000, 
      contentType: "application/json", 
      success: function(data) { 
       console.log("success"); 
      }, 
      complete: function(data) { 
      console.log("completed"); 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { 

       alert('Error connecting to the Node.js server... ' + textStatus + " " + errorThrown); 
      } 
     }); 
    } 

JS後端

exports.home = function(req, res) { 


    function passList(profArray, callback) { 
    setTimeout(function() { 
     callback(profArray); 
    }, 1000); 
    } 


    function getProfs(teacher_name, successCallback) { 

    google.resultsPerPage = 10 
    var nextCounter = 0 

    google(teacher_name, function (err, res){ 
     if (err) console.error(err) 
     var teacher_results = []; //Hold all the teachers returned from the function 
     for (var i = 0; i < res.links.length; ++i) { 
     var link = res.links[i]; 
     if (!link.title.includes('Add') || !link.title.includes('RATINGS') || !link.title.includes("Hint")) { 

      teacher_results.push(link.title); 

     }//End if for comparisons || 
     } //End For 
     successCallback(teacher_results); 
    }); //End google function 
     teacher_results = ['tester1', 'tester2']; 
     successCallback(teacher_results); 
    } //End searchForProfessor 


    getProfs(teacher_name, function(data) { 
    prof_list = data; 
    console.log(prof_list); 
    return true; 
    }); 


    if (req.method == 'POST'){ 
     console.log("true"); 
     // dataReceived = JSON.parse(req); 
     // console.log(dataReceived); 
     var obj = { 
      tid: 'ryan' 
     }; 

     res.send(JSON.stringify(obj)); 
    } 



    res.render('home', { 
    profs: prof_list, 
    dataStuff : dataReceived 
    }); 
}; 
+0

'return'哪裏?需要更多地瞭解服務器代碼上下文 – charlietfl

+0

說我在服務器端調用一個方法。我想要從服務器返回的數據返回到客戶端,以便將其放到我的模板上。 – CuriousFellow

+0

您需要包含更多的JS後端代碼。 – JAM

回答

2

在後臺,你應該有一些航線在您AJAX調用土地。在那裏,你可以在你的回覆中調用send

在node.js的/快遞,這樣會看起來像

app.get('/ajaxURL', function (req, res) { 
    res.send('I want this string to return to the client'); 
}); 

從前臺訪問數據,訪問它在你的AJAX回調:

$.ajax({url: '/ajaxURL'}).done(function (data) { 
    console.log(data); 
}); 
+0

如何從客戶端的ajax函數中的res.send訪問數據? – CuriousFellow

+0

你有成功的回調,它有參數數據,所以你可以通過閱讀這個參數訪問 –

+0

我創建了一個新的路由,它與返回的數據,這正是我想要的。我仍然遇到的問題是當我做res.send(req.body)時,返回的數據是空白的。是否有一個原因?它不應該打印我從最初的AJAX調用中傳入的數據嗎? – CuriousFellow

1

我沒有得到的上下文正確,但你可以通過這個例子弄清楚。

從服務器AJAX的成功方法發送數據 response.send("Your data"); 訪問這個數據在客戶端: success:function(data){console.log(data)};

相關問題