以下内容不会重定向我的页面:这是MVC代码:
[HttpPost]
public ActionResult GoHome()
{
return RedirectToAction("Index", "Home");
}
Run Code Online (Sandbox Code Playgroud)
这是ajax帖子:
$.support.cors = true;
$.ajax({
type: "POST",
url: "http://localhost/UserAccount/GoHome",
dataType: 'json',
crossDomain: true
});
Run Code Online (Sandbox Code Playgroud)
该帖子是成功的,当它与GoHome操作发生冲突时,它不会重定向到Home Controller的Index Action.
这个真的很奇怪.我$.post()
在代码中有多个,但有一个dunno为什么发送json参数x-www-form-urlencoded
而不是因此不起作用.
这是代码:
$.post("/Route/SaveTransportProperties", { properties: JSON.stringify(propArray), currTravelBox: JSON.stringify(travelBoxObj), accessToken: getAccessToken()}, function(data)
{
//DO STUFF
});
Run Code Online (Sandbox Code Playgroud)
XHR在Firefox中看起来像这样:
任何想法为什么会发生这种情况?我还将类型强制为'json',但也不起作用.
我正在开发一个Laravel 5应用程序,该应用程序默认为所有POST请求启用CSRF保护.我喜欢这个增加的安全性所以我正在尝试使用它.
在发出简单$.post()
请求时,我收到'Illuminate\Session\TokenMismatchException'
错误,因为_token
POST数据中缺少所需的表单输入.以下是有问题的$ .post请求的示例:
var userID = $("#userID").val();
$.post('/admin/users/delete-user', {id:userID}, function() {
// User deleted
});
Run Code Online (Sandbox Code Playgroud)
我将CSRF令牌存储为标题中的元字段,可以使用以下方法轻松访问它:
var csrf_token = $('meta[name="csrf-token"]').attr('content');
Run Code Online (Sandbox Code Playgroud)
是否可以将此附加到所有传出$.post()
请求的json数据?我尝试使用标题,但Laravel似乎没有认出它们 -
var csrf_token = $('meta[name="csrf-token"]').attr('content');
alert(csrf_token);
$.ajaxPrefilter(function(options, originalOptions, jqXHR){
if (options['type'].toLowerCase() === "post") {
jqXHR.setRequestHeader('X-CSRFToken', csrf_token);
}
});
Run Code Online (Sandbox Code Playgroud) 当用户单击特定项时,我使用jQuery的post方法更新数据库中的内容:
$.post("/posts/" + post_id + "/update_something",
{ some_param: some_value },
success_handler);
Run Code Online (Sandbox Code Playgroud)
这里update_something
看起来是这样的:
def update_something
post = Post.find(params[:id])
post.update_attributes(:some_field => params[:some_param])
render :nothing => true
end
Run Code Online (Sandbox Code Playgroud)
问题是如果update_attributes
失败,请求仍然成功并success_handler
执行.
如果update_attributes
失败,我怎么能导致请求失败,以至于success_handler
不会被执行?
我有一个奇怪的情况,我的jquery.post返回代码#200(OK),但错误处理程序被命中.
这是我的MVC WebAPI服务器端代码(它所做的只是返回代码#200 OK):
[HttpPost]
public HttpResponseMessage Post(T input)
{
//_handler.Create(input);
return Request.CreateResponse(HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)
这是我的客户端脚本
ServerAccess.prototype.Save = function (m) {
$.post("http://localhost:55482/M/", m)
.success(
function (o) {
alert("success");
})
.error(
function (xhr, textStatus, errorThrown) {
if (typeof console == 'object' && typeof console.log == 'function') {
console.log(xhr);
console.log(textStatus);
console.log(errorThrown);
}
}
);
};
Run Code Online (Sandbox Code Playgroud)
Firebug中的控制台输出是:
POST
http://localhost:55482/M/
200 OK 894ms头
响应标题
内容长度6
Content-Type application/json; 字符集= utf-8的
Date Sun,28 Oct 2012 18:55:17 GMT
服务器Microsoft-HTTPAPI/2.0
请求标题
接受 /
Accept-Encoding gzip,deflate
Accept-Language nb-no,nb; q …
我正在使用jQuery Post函数,例如:
var fooVar = true;
var barVar = 1;
var bazVar = "baz";
$.post("url",
{
foo: fooVar,
bar: barVar,
baz: bazVar
},
function(){
alert("success");
}
);
Run Code Online (Sandbox Code Playgroud)
在我的日志中,我看到一个间歇性的问题,即"url"
没有任何表单参数的请求,我只有一个函数调用它.
是否有一种情况可以触发POST请求,而不发送jQuery Post中指定的表单参数?
我希望看到:
富=真巴= 1&巴兹=巴兹
但是根本没有表格参数:
更新:这个问题似乎主要是在Internet Explorer浏览器(IE7-IE11)上查看统计数据,但它不是IE独有的(Chrome,Firefox也有问题).
我有一个textarea用户输入注释和一个按钮提交使用jQuery .post()
和JSON:
$('#submit').click(function () {
var comment = {};
comment.Author = $("#author").val();
comment.Email = $("#email").val();
comment.WebSite = $("#url").val();
comment.Body = $("#comment").val(); // textarea
$.post('/ajax/comments', comment, parseComment, 'json');
Run Code Online (Sandbox Code Playgroud)
但$("#comment").val()
似乎没有保留换行符(输入正在丢失换行符).我如何让它工作?
我有一个用于向服务器发送请求的包装函数,如果服务器返回401的代码,我需要做一些特定的事情,我不知道如何获取这些数据
$.mobile.showPageLoadingMsg();
$.post(apiUrl+method,p,function(d) {
$.mobile.hidePageLoadingMsg();
console.log(d.success);
console.log(d.message);
if(d.success == true){
window[callback](d.data);
}
else{
if(d.message != null){
alert(d.message);
}
}
},'json')
.error(function() {
//need to check for 401 status here to do something
$.mobile.hidePageLoadingMsg();
alert("error");
});
Run Code Online (Sandbox Code Playgroud)
如果我的服务器端代码抛出一个401异常,jquery .error函数选择它只是因为它不是200 OK但我需要检查它是否是401代码.
我正在尝试提高我的jQuery性能,我注意到它在Chrome中的运行速度比其他浏览器快.当它只是对PHP文件的AJAX调用时,它是否有意义?
为了测试它,我在一个click
事件上这样做:
var startTime = new Date();
$.post("http://"+ document.domain + "action.json", { data: data},
function(dat){
console.log('ending: ', (new Date() - startTime) / 1000);
}
});
Run Code Online (Sandbox Code Playgroud)
以秒为单位的结果是:
可以在每个浏览器上访问控制台的开发工具是否会干扰此结果?
谢谢.
我想在将数据发送到服务器时传递Authorization标头.我试过了
$.ajax({
url : <ServiceURL>,
data : JSON.stringify(JSonData),
type : 'POST',
contentType : "text/html",
dataType : 'json',
success : function(Result) {
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', <Authorization Header Value>);
},
error: function (RcvData, error) {
console.log(RcvData);
}
});
Run Code Online (Sandbox Code Playgroud)
但REST服务返回错误(错误代码:500).添加授权之前,同样的服务与$ .post()一起正常工作.谁能告诉我"如何在$ .post()中传递授权标题?"
jquery ×10
jquery-post ×10
javascript ×4
post ×3
ajax ×2
browser ×1
c# ×1
cross-domain ×1
http-post ×1
laravel ×1
laravel-5 ×1
line-breaks ×1
performance ×1
rest ×1
textarea ×1