2016-10-31 2 views
0

나는 백엔드에서 node.js와 Express.js를 사용하고 있으며 AJAX를 통해 클라이언트로부터 서버 호출을 시도하고 있습니다.Express.js에서 AJAX GET 요청 받기

Node.js를/Express.js :

app.post('/createNewThing', function(req, res) { 
    var userInput = req.body.userInput; 
    if (userInput) { 
     res.send('It worked!'); 
    } 
}); 

클라이언트 측/AJAX 요청 :

var userInputForm = $('#userInputForm.val()') 
$.ajax({ 
    url: "/createNewThing", 
    type: "POST", 
    data: "userInput=" + userInputForm, 
    dataType: "text", 
     success: function(response, status, http) { 
      if (response) { 
       console.log('AJAX worked!); 
      } 
     } 
    }); 

그래서 내가 AJAX와 함께 잘 작동이 POST 요청을

userInputForm은 HTML 양식에서 제공됩니다.

이 POST 요청은 정상적으로 작동합니다. 하지만 이것을 GET 요청으로 변경하고 싶습니다. 내가 var userInputForm = $('#userInputForm.val()')가 오류 또는 잘못된 data..This이 이유가 될 수 있습니다 얻을 것이라고 생각

GET /createNewThing?userInput=500

+0

아무것도 설명하지 왜'의 값 userInputForm' 당신이 ''500 ''로 이전했다 지정되지 않은 어떤 값에서 변경됩니다. – Quentin

+0

나는 그것이 명확하게 그것을 명확하게하기 위해 그것을 편집했다. 그것은'userInputForm'을 500의 값으로 변경하지 않습니다; 500은 오류 코드입니다 (명령 프롬프트에서 인쇄하는 방법입니다). – MonkeyOnARock

+0

글쎄, 그 값이 그냥 비어있는 것 같습니다 (그리고 아마도 공백 값은 여러분이 우리에게 보여주지 않은 서버 측 코드에서 500을 던질 것입니다). 여러분이 변경 한 내용이'userInputForm'의 값을 전혀 변경하지 않을 이유는 없습니다. – Quentin

답변

1

GET 요청을하면 데이터가 쿼리에 나타납니다. 문자열 (요청 헤더의 URL). 요청 본문에 나타나지 않습니다. 요청 본문이 없습니다.

요청 본문에서 읽으려고하면 예외를 트리거하고 내부 서버 오류가 발생하는 정의되지 않은 개체의 속성에 액세스하려고합니다.

This answer explains how to read a query string

는 :

var id = req.query.id; // $_GET["id"] 

그래서 당신이 가지고있는 코드에서

var userInput = req.query.userInput; 
+0

그랬습니다. 너는 성자 야, 고마워. – MonkeyOnARock

0

: 나는 app.getapp.post을 변경하고 GET에 AJAX 호출에서 type를 변경하는 경우,이 500 오류 오류. userInputForm으로 인해 문자열과 연결되지 않을 수 있습니다 userInput= 사실 그것은 나쁜 데이터입니다. 아약스의 데이터, 당신은에 data: "userInput=" + userInputForm, 에서 데이터를 수정해야합니다 및 :

data: { 
    userInput: userInputForm 
}, 
dataType: "json" 

그리고 var userInputForm = $('#userInputForm.val()')

에서 마지막

var userInputForm = $('#userInputForm').val();에, 당신은 벨으로 수정할 수, 나는 그것이 작동 생각 :

var userInputForm = $('#userInputForm').val(); 
$.ajax({ 
    url: "/createNewThing?userInput=" + userInputForm, 
    type: "GET", 
    success: function(response, status, http) { 
     if (response) { 
       console.log('AJAX worked!); 
      } 
     } 
    }); 
+0

'data' 변경을했는데 POST 요청에 작동하지만 여전히 GET 요청으로 변경하려고하면 '500'오류가 발생합니다. – MonkeyOnARock

+0

onl 이 차이는'userInputForm'을 적절하게 벗어나는 것일 것입니다 - POST 요청에서 중단되지 않는 GET 요청에서 무엇이든 고칠 수있는 상황은 생각할 수 없습니다. – Quentin

+0

흠, 그래, 고마워! 나는 내가 뭔가를 놓치고 있는지 확인하기 위해 내 코드를 계속 점검 할 것이다. – MonkeyOnARock