Проверьте ваш метод update
:
public function update(Request $request, $id)
{
// ...
return Mock::where($subject, $subject)->update([ // <---------
$subject => $request['list'], // <-------
]);
// ...
}
В предложениях where
первым параметром является имя столбца, а не значение. То же самое относится и к обновлению атрибутов. Проверьте эту строку:
Mock::where($subject, $subject)->/** */
Сделайте это вместо:
Mock::where('subject', $subject)->/** */
Кстати, я не использовал ваш способ получения данных запроса, но в случае, если он возвращает null
значения, попробуйте этот подход:
$subject = $request->get('subject');
Наконец, при выполнении операции update
результатом является boolean
, а не обновленная запись. Итак, если вы ожидаете вернуть обновленный объект, сделайте это вместо:
public function update(Request $request, $id)
{
Mock::find($id);
$mock = Mock::where('subject', $subject)->first();
$mock->update(['subject' => $request->get('list')]);
return $mock->fresh();
}
Поскольку ОП опубликовал аналогичный вопрос, и я разместил ответ, который также соответствует этому вопросу, он попросил меня дать ссылку на мой ответ, а не повторять это здесь.
Возможно, вы можете попробовать что-то вроде этого:
XMLHttpRequest.prototype.real_open = XMLHttpRequest.prototype.open;
var your_open_method = function(sMethod, sUrl, bAsync, sUser, sPassword) {
alert('an XHR request has been made!');
this.real_open(sMethod, sUrl, bAsync, sUser, sPassword);
}
XMLHttpRequest.prototype.open = your_open_method;
Конечно, вместо предупреждения вы можете иметь свое собственное отслеживание код. Я опробовал его, и он работает с «обычными JavaScript-запросами», а также с запросами, сделанными с помощью jquery. Я думаю, что это должно работать независимо от структуры, которая использовалась, чтобы сделать запрос.
РЕДАКТИРОВАТЬ 21 апреля Я действительно не знаю, как можно расширить ActiveXObject. Я предполагаю, что что-то вроде этого должно работать:
XHR = new ActiveXObject("Microsoft.XMLHTTP");
var XHR.prototype.old_open = XHR.prototype.open;
var new_open = function(sMethod, sUrl, bAsync, sUser, sPassword) {
alert('an IE XHR request has been made!');
this.old_open(sMethod, sUrl, bAsync, sUser, sPassword);
}
XHR.prototype.open = new_open;
К сожалению (или, возможно, нет), у меня нет IE, поэтому я не могу проверить это. Но попробуй и дай мне знать, все ли получилось.
There is nothing "to get at real object" it is the real object!
Sounds like you are looking for something like this guy is doing....
http://www.adobepress.com/articles/article.asp?p=439600
document.write("<script type=\"text/javascript\" src=\"js/HTTP.js\"></script>");
function Ajax()
{
this.toString = function() { return "Ajax"; }
this.http = new HTTP();
this.makeRequest = function(_method, _url, _callbackMethod)
{
this.request = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");
this.request.onreadystatechange = _callbackMethod;
this.request.open(_method, _url, true);
this.request.send(_url);
}
this.checkReadyState = function(_id, _1, _2, _3)
{
switch(this.request.readyState)
{
case 1:
document.getElementById(_id).innerHTML = _1;
break;
case 2:
document.getElementById(_id).innerHTML = _2;
break;
case 3:
document.getElementById(_id).innerHTML = _3;
break;
case 4:
return this.http.status(this.request.status);
}
}
}
Это всегда сработало для меня.
var xmlHttp;
function yourajaxfunction(str)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null){
alert ("Browser does not support HTTP Request");
return;
}
var url="yourserversidecodefile.php";
url=url+"?q="+str;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}
function stateChanged() {
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}
function GetXmlHttpObject(){
var xmlHttp=null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (E1) {
//Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (E2) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
Я рекомендую использовать jQuery для AJAX. Это очень маленький, но очень гибкий и быстрый каркас. Проверьте документы здесь .