我正在向我的jQuery发送错误响应.但是,我无法得到响应文本(在下面的示例中,这将是去海滩)
jQuery唯一说的就是"错误".
有关详情,请参阅此示例:
PHP
<?
header('HTTP/1.1 500 Internal Server Error');
print "Gone to the beach"
?>
Run Code Online (Sandbox Code Playgroud)
jQuery的
$.ajax({
type: "post",
data: {id: 0},
cache: false,
url: "doIt.php",
dataType: "text",
error: function (request, error) {
console.log(arguments);
alert(" Can't do because: " + error);
},
success: function () {
alert(" Done ! ");
}
});
Run Code Online (Sandbox Code Playgroud)
现在我的结果是:
日志:
[XMLHttpRequest readyState=4 status=500, "error", undefined]
Run Code Online (Sandbox Code Playgroud)
警报:
做不到因为:错误
有任何想法吗?
我收到了很多499 nginx错误代码.我看到这是客户端问题.这不是Nginx或我的uWSGI堆栈的问题.我注意到当获得499时uWSGI日志中的相关性.
address space usage: 383692800 bytes/365MB} {rss usage: 167038976
bytes/159MB} [pid: 16614|app: 0|req: 74184/222373] 74.125.191.16 ()
{36 vars in 481 bytes} [Fri Oct 19 10:07:07 2012] POST /bidder/ =>
generated 0 bytes in 8 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1
switches on core 1760)
SIGPIPE: writing to a closed pipe/socket/fd (probably the client
disconnected) on request /bidder/ (ip 74.125.xxx.xxx) !!!
Fri Oct 19 10:07:07 2012 - write(): Broken pipe [proto/uwsgi.c line
143] during POST /bidder/ (74.125.xxx.xxx) …Run Code Online (Sandbox Code Playgroud) 我试图通过使用laravel创建Restful api并使用php artisan make:controller RestController创建我的控制器,这是我的控制器代码:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class RestController extends Controller
{
private $arr = array(
array("name"=>"jon", "family"=>"doe"),
array("name"=>"jhon", "family" => "doue")
);
public function index(){
return json_encode($this->arr);
}
public function store(Request $request){
return "oops!!";
}
public function update (Request $request, $id){
return "test";
}
}
Run Code Online (Sandbox Code Playgroud)
我添加这行代码来在routes/web.php文件中创建此路由
Route::resource('person', 'RestController');
Run Code Online (Sandbox Code Playgroud)
当我尝试在GET/person上测试这个api它工作正常但是在帖子上并且把我从laravel获得419状态代码.
保存模型时是否有正确的方法来处理自定义错误?举个例子,假设我的模型只有两个属性"name"和"value".当我这样做时:
var myModel = this.get('store').createRecord('myModel', {"name": "someName", "value": "someValue"});
myModel.save().then(function() {
//if success
//server responded with {"myModel:{"id":1,"name":"someName","value":"someValue"}"}
},function() {
//if failure
//server responded with {"error":"some custom error message"}
//BUT HOW TO CATCH THIS AND POSSIBLY REMOVE THE MODEL FROM THE STORE
});
Run Code Online (Sandbox Code Playgroud)
解决此问题的一种方法是进行额外的ajax调用以检查名称是否唯一,然后执行保存.我只是想知道这里最好/最优雅的方法是什么.
谢谢,迪
编辑:我认为在groovy中为事物的服务器端提供更多上下文可能会有所帮助.所以这里是:
在我的控制器中我有:
def create() {
try {
newRow = someService.create(params)
render someService.list(newRow) as JSON//returns data in format needed by ember-data
}
catch (ValidationException ex) {
def errors = ["errors":[]]
ex.errors.allErrors.each{
if(it.arguments[0] == "fieldName" && it.code=="constrantViolated"){ …Run Code Online (Sandbox Code Playgroud) 一切运行良好,API(flask)很好地返回数据。但是,当我尝试自定义响应代码时,我无法做到这一点。
以下是我尝试过的两种方法:
from flask import make_response
dictionary = {1:'a', 2:'b'}
resp = make_response(dictionary,1001)
return resp
#In developer tools, I could see the data, but status-code is 200
Run Code Online (Sandbox Code Playgroud)
。
from flask import Response
dictionary = {1:'a', 2:'b'}
resp = Response(dictionary, status = 1001)
return resp
#Here again, I see the data, but the status code is 200
Run Code Online (Sandbox Code Playgroud)
如何将状态代码设置为其他内容?
php ×2
ajax ×1
ember-data ×1
ember.js ×1
flask ×1
grails-2.0 ×1
http-headers ×1
javascript ×1
jquery ×1
laravel-5 ×1
nginx ×1
python ×1
rest ×1
uwsgi ×1