我一直在掙扎了一會兒,我檢查了所有我能想到的,我敢肯定,這應該工作..但事實並非如此。 這個想法很簡單 - 你有一個類型爲「text」的表單輸入。當你在輸入中輸入一個數字並點擊「Click me!」時,它應該將數據以JSON格式發佈到Route(通過Closure處理),然後檢查輸入是否是JSON格式,如果是,數據庫請求,然後返回數據。POST-ING JSON到Laravel 4使用jQuery
這是我的看法(table.blade.php)
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<title>json test</title>
</head>
<body>
<form action="#">
<input type="text" name="articleID" id="articleid" placeholder="Enter article id" value=""/>
</form>
<a href="#" id="trigger">Click me!</a>
<script>
$(document).ready(function(){
var a_id = $("#articleid").val();
var article = { id: a_id };
$("#trigger").click(function(){
console.log(article);
$.ajax({
type: "POST",
url: "/json",
data: article,
dataType: 'json',
success: function(data){
alert(data.title);
}
});
return false;
});
});
</script>
</body>
</html>
而且我routes.php文件
Route::get('json',function(){
return View::make('table');
});
Route::post('json',function(){
if (Input::isJson())
{
$request = Input::all();
$article = Article::find($request['id']);
if (!is_null($article))
{
return Response::json($article);
}
else return Response::json(['error' => "Object not found"],404);
}
else return "not json";
});
我有兩個問題:
console.log(article);
打印Object { id=""}
所以JS似乎 不拿起的input
- 無論什麼價值,我總是收到響應
"not json"
,即使我在Ajax調用
的東西代替data: article
像data: {id: 123}
UPDATE 由於milz,第一個問題是現在固定,我重構了$(document).ready()
功能,像這樣:
$("#trigger").click(function(){
var a_id = $("#articleid").val();
var article = { id: a_id };
console.log(article);
$.ajax({
type: "POST",
url: "/json",
data: article,
dataType: 'json',
success: function(data){
alert(data.title);
}
});
return false;
});
現在的O bject被正確設置,但後端仍然只返回「不json」... 我不知道我在做什麼錯在這裏,我將不勝感激任何幫助!提前致謝!
這個工作,非常感謝! – 2014-11-13 09:24:19
不客氣:) – lukasgeiter 2014-11-13 09:25:27