最近同事在做项目的时候,因为需要添加测试数据,利用的laravel自带的seeder进行编写数据插入,需要在服务器测试环境执行自动插入命令,导致的一个问题就是每次都需要把原来的所有数据表truncate(清空),然后再插入数据,否则会导致每次都插入重复的数据。但是清空表,这样很容易把测试环境已经产生的数据给干了,也不方便做管理。
本文已经被查看1,145次laravel 基于migration原理的seeder
发表评论
最近同事在做项目的时候,因为需要添加测试数据,利用的laravel自带的seeder进行编写数据插入,需要在服务器测试环境执行自动插入命令,导致的一个问题就是每次都需要把原来的所有数据表truncate(清空),然后再插入数据,否则会导致每次都插入重复的数据。但是清空表,这样很容易把测试环境已经产生的数据给干了,也不方便做管理。
本文已经被查看1,145次Ajax
的原理简单来说通过XmlHttpRequest
对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
更多信息请查看http://www.cnblogs.com/mingmingruyuedlut/archive/2011/10/18/2216553.html
在jquery框架中,对于通过它的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,你可以利用如下方法判断某个请求是ajax请求还是普通请求:
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { ..这是一个ajax请求,然后... } else { ..这不是一个ajax请求,然后... }
/** * Returns whether this is an AJAX (XMLHttpRequest) request. * * Note that jQuery doesn't set the header in case of cross domain * requests: https://stackoverflow.com/questions/8163703/cross-domain-ajax-doesnt-send-x-requested-with-header * * @return boolean whether this is an AJAX (XMLHttpRequest) request. */ public function getIsAjax() { return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest'; }
/** * Determine if the request is the result of an AJAX call. * * @return bool */ public function ajax() { return $this->isXmlHttpRequest(); }
/** * Returns true if the request is a XMLHttpRequest. * * It works if your JavaScript library sets an X-Requested-With HTTP header. * It is known to work with common JavaScript frameworks: * * @link http://en.wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript * * @return bool true if the request is an XMLHttpRequest, false otherwise */ public function isXmlHttpRequest() { return 'XMLHttpRequest' == $this->headers->get('X-Requested-With'); }
本文已经被查看1,018次这里有一个另外需要注意的问题,就是如果你的jquery请求是通过
iframe
打开网页的,那么HTTP_X_REQUESTED_WITH参数不会被传递,也就是说你没有办法判断请求的类型。