0
我試圖從PhoneGap發送一個JSON字符串到我的Ruby應用程序。在PhoneGap的,下面的代碼發送JSON字符串:解析JSON錯誤(從PhoneGap到Ruby)
var location = {
lat: position.coords.latitude,
lng: position.coords.longitude
}
$.ajax({
type: "post",
dataType: 'json',
data: location,
url: 'http://localhost:3000/location/new'
});
在我的Ruby應用程序,我有一個控制器試圖處理響應:
def addlocation
require 'json'
json_string = params[:data]
parsed_json = JSON.parse(json_string.to_json)
if parsed_json["app"] == "Inrix PhoneGap"
new_obj = Location.new
new_obj.lat = parsed_json["lat"].to_f
new_obj.lng = parsed_json["lng"].to_f
new_obj.save
end
end
我知道我是從獲取數據PhoneGap,因爲參數顯示在服務器日誌中。我試圖將響應轉換爲一個字符串,然後轉換爲json,因爲它看起來不是正確的json格式。我也嘗試傳遞JSON.parse函數response.body和params [:data]。這裏是我在服務器日誌中收到的錯誤:
Started POST "/location/new" for 127.0.0.1 at 2013-07-23 01:14:37 -0700
Processing by LocationsController#addlocation as HTML
Parameters: {"lat"=>"37.785834", "lng"=>"-122.406417"}
Completed 500 Internal Server Error in 0ms
JSON::ParserError (757: unexpected token at 'null'):
app/controllers/locations_controller.rb:12:in `addlocation'
Rendered /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.9ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p392/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.5ms)
在此先感謝。如果您需要更多信息,請與我們聯繫。乾杯!
Doh!我想這意味着該上牀了。原來我甚至不需要運行JSON.parse函數。我可以這樣做: 'params [:location] [:lat]' 感謝您的幫助! –