Knockout.js 处理错误:尝试登录时HttpRequestMethodNotSupportedException
我正在尝试使用oracle jet登录页面,使用npm yoeman软件包管理器和grunt构建工具。 以下是从服务器引发的错误响应: o、 s.s.o.provider.endpoint.TokenEndpoint:处理错误: HttpRequestMethodNotSupportedException,请求方法'GET'不支持 支持 但我使用Ajax方法作为POSTKnockout.js 处理错误:尝试登录时HttpRequestMethodNotSupportedException,knockout.js,requirejs,oracle-jet,Knockout.js,Requirejs,Oracle Jet,我正在尝试使用oracle jet登录页面,使用npm yoeman软件包管理器和grunt构建工具。 以下是从服务器引发的错误响应: o、 s.s.o.provider.endpoint.TokenEndpoint:处理错误: HttpRequestMethodNotSupportedException,请求方法'GET'不支持 支持 但我使用Ajax方法作为POST define(['ojs/ojcore','knockout', 'ojs/ojinputtext', 'ojs/ojbutt
define(['ojs/ojcore','knockout', 'ojs/ojinputtext', 'ojs/ojbutton',
'ojs/ojknockout-validation', 'ojs/ojmodel'
], function (oj, ko) {
/**
* The view model for the main content view template
*/
function logintestContentViewModel() {
var self = this;
self.tracker = ko.observable();
self.username = ko.observable("");
self.password = ko.observable("");
self.clickedButton = ko.observable();
self.buttonClick = function(data, event)
{
//alert("call"+JSON.stringify(data));
var trackerObj = ko.utils.unwrapObservable(self.tracker);
alert("submittedValue====="+self.username());
alert("password====="+self.password());
//self.submittedValue();
//change this to a valid ajax call.
alert("ajax call initiated");
self.url = "http://192.168.0.100:8080/oauth/token?grant_type=password";
self.url +="&username=";
self.url += self.username();
self.url +="&password=";
self.url += self.password();
//this.url += "client_id=my-trusted-client&client_secret=clientpassword";
$.ajax({
url: self.url,
type: "POST",
grant_type : "password",
data: {client_id : "my-trusted-client", client_secret: "clientpassword1"},
dataType: 'json',
success: function(res) {
alert(res);
this.submittedValue(res.token);
},
failure: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus);
this.submittedValue("Login Failed");
}
})
//this.submittedValue(this.url)
return true;
/*
$.ajax({
type: "POST",
dataType: "jsonp",
crossDomain:true,
data: "grant_type=password&username="+self.username()+"&password="+self.password()+"",
xhrFields: {
withCredentials: true
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Basic bXktdHJ1c3RlZC1jbGllbnQ6Y2xpZW50cGFzc3dvcmQ=');
},
url: 'http://192.168.0.100:8080/oauth/token',
success: function(data) {
alert(data);
}
});*/
};
self.routePage = function(data,event)
{
self.clickedButton(event.currentTarget.id);
return true;
};
self.onClick = function()
{
self.buttonClick();
self.routePage();
}
self.shouldDisableCreate = function()
{
var trackerObj = ko.utils.unwrapObservable(self.tracker),
hasInvalidComponents = trackerObj ? trackerObj["invalidShown"] : false;
return hasInvalidComponents;
};
self._showComponentValidationErrors = function (trackerObj)
{
trackerObj.showMessages();
if (trackerObj.focusOnFirstInvalid())
return false;
};
}
return logintestContentViewModel;
在本例中,您将POST作为“type”的值。尝试将“type”更改为“method”,看看是否有帮助 从jQuery.ajax API文档:
var menuId = $( "ul.nav" ).first().attr( "id" );
var request = $.ajax({
url: "script.php",
method: "POST",
data: { id : menuId },
dataType: "html"
});
request.done(function( msg ) {
$( "#log" ).html( msg );
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
console.log(textStatus)的输出是什么?请提供开发者工具控制台的日志错误显示请求方法“GET”不受支持,但在您的代码中,您的ajax代码类型为:“POST”
if you wanna post and get a response use this
var dataVal2 = {your data};
$.ajax({
type: "POST",
url: "url",
data: JSON.stringify(dataVal2),
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: true,
success: function (data, status, jqXHR) {
alert(data.result);
var projectId = data.result;
alert(projectId);
},
error: function (xhr) {
alert(xhr.responseText);
}
if you want a response by using GET method use this
var data = {your data};
$.getJSON("url", data).then(function (resData) {
self.DataResponse(resData);
});
and your error function alike in post method