サーバーへのjquery投稿後に別のページにリダイレクトすることは可能ですか? ユーザーがログインしたら、json レスポンスを返すか、別のページにリダイレクトしたいと考えています。サーバーからのログ ステートメントを確認できるので、正しいビュー callable が呼び出されていることがわかります。
ここに私のjqueryの投稿があります:
function postToServer(url, params) {
$.ajax({
type: 'POST',
url: url,
data: JSON.stringify(params),
contentType: 'application/json; charset=utf-8',
statusCode: {
200: function (data, textStatus, jqXHR) {
return data;
},
201: function (data, textStatus, jqXHR) {
return data;
},
400: function(data, textStatus, jqXHR) {
return data;
}
}
});
}
それはかなり基本的で、うまく機能しているようです。json を返すたびに、応答が正しく処理されます。
ここに私の見解があります:
#LOGIN
class LoginView(object):
def __init__(self, request):
self.request = request
self.ctx = core.context()
@view_config(route_name="login", request_method='GET')
def get(self):
template = "project:templates/login/login.mak"
context = {}
return render_to_response(template, context, request=self.request)
@view_config(route_name="login", request_method='POST')
def post(self):
url = self.request.route_url('dashboard')
print 'url: ' + url
#log user in and get credentials
json = getJsonCredentialsObject()
return Response('json', json)
#DASHBOARD
class DashboardView(object):
def __init__(self, request):
self.request = request
self.ctx = core.context()
@view_config(route_name="dashboard", request_method='GET')
def get(self):
print "in dashboard"
template = "project:templates/dashboard/dashboard.mak"
session = self.request.session
context = {}
return render_to_response(template, context, request=self.request)
Login クラスの post メソッドでインタラクションを処理したいのですが、"return HTTPFound(location=self.request.route_url('/dashboard'))" を使用してここにリダイレクトしようとしても、何も起こりません。request.json_body オブジェクトをリクエストから取得するのにも問題があります (null です) が、それは別の問題です。助けてくれてありがとう。