2013-02-21 94 views
1

我寫的PhoneGap的 服務器端應用程序,我寫的的NodeJS抓響應時發送JSONP請求的PhoneGap

exports.login = function(request, response) { 
    var keys = Object.keys(request.query); 
    request.body= JSON.parse(keys[1]); 
    Accounts.findOne({ 
     name : request.body.name 
    }, function(err, docs) { 
     if (!docs) { 
      response.json('{"error": "user-not-found"}'); 
     } else { 
      console.log("docs: ", docs); 
      Accounts.validatePassword(request.body.password, docs['hashedPass'], docs['salt'], function(error, res) { 
       if (error) { 
        response.json(error); 
       } 
       if (res) { 
        generateToken(request.body.name, request.body.device, function(res) { 
         if (res) { 
          response.json('{"token": "' + res + '"}'); 
         } else { 
          response.json('{"error": "cant-create-token"}'); 
         } 
        }); 
       } else { 
        response.json('{"error": "invalid-password"}'); 
       } 
      }); 

     } 
    }) 
} 

的PhoneGap:我寫功能登錄

function LoginUser(info) 
{ 
    var varUrl=server+"/auth/login"; 
    $.ajax({ 
      url:varUrl, 
      type:"GET", 
      contentType:"application/json", 
      headers: { 
          Accept:"application/json", 
          "Access-Control-Allow-Origin": "*" 
         },    
      data:info,    
      dataType:"jsonp", 
      success:function(data) 
       { 
        console.log("HERE"); 
        console.log(data);      
       }, 
      error: function(err){ 
       console.log(err); 
      } 


    }); 
} 

,我要求它會喜歡這個http://localhost:3000/auth/login?callback=jQuery161014894121675752103_1361459462241&{%22name%22:%22fdfdfd%22,%22password%22:%22fdfdfdfd%22}&_=1361459615743

當我看到在鉻的開發者標籤網絡的響應是"{\"error\": \"user-not-found\"}"

,但我不能趕上上述 這repsonse在function LoginUser(info)如何獲得它,因爲在控制檯它打印error: function(err){ console.log(err); }

我不知道爲什麼。 你能幫助我嗎?

+0

爲什麼你使用GET請求,你應該使用POST進行登錄。 – dfsq 2013-02-21 15:22:11

+0

我試過get和post並得到上面的同樣的問題 – giaosudau 2013-02-21 15:26:38

+1

jsonp總是一個get請求。 – 2013-02-21 15:48:48

回答

1

您所使用的回調服務器端,並在您的 JSONP文件的響應,你需要做的:

jQuery161014894121675752103_1361459462241({"error": "user-not-found"}) 

當函數名稱來自於你的JSONP請求回調變量。 導致jsonp請求只是「包含」腳本標記在您的站點,它可以執行js(基本上)。

+0

你能解釋一下嗎? – giaosudau 2013-02-21 15:26:54

+0

我只是嘗試並得到相同的問題未捕獲ReferenceError:jQuery161014894121675752103_1361459462241未定義,它打印錯誤:function(err){console.log(err); } – giaosudau 2013-02-21 15:31:49

+0

你必須在服務器端使用(假設php): print $ _REQUEST ['callback']。「({'error':'not logged in'})」; – 2013-02-21 15:47:13