我试图从我的数据库中显示一些依赖于用户输入的数据。我正在使用ajax请求获取数据,将其发送回控制器中的函数,然后将其导出回我的视图。我想收集这些数据并显示它而不去另一个视图(我只是隐藏了以前的表单并取消隐藏新表单)。
以下是相关代码:
使用Javascript:
$('#submit_one').on('click', function(event) {
event.preventDefault();
if(! $(this).hasClass('faded')) {
var fbid = $("input[name='like']:checked").val();
//variable to be collected is fbid
request = $.ajax({
url: "http://crowdtest.dev:8888/fans/pick_favorite",
type: "post", success:function(data){},
data: {'fbid': fbid} ,beforeSend: function(data){
console.log(data);
}
});
to_welcome_two();
}
});
function to_welcome_two()
{
$('#welcome_one').addClass('hidden');
$('#welcome_two').removeClass('hidden');
}
控制器功能:
public function pick_favorite() {
$fbid=Input::get('fbid');
return Artist::specific_artist($fbid);
}
公共职能getWelcome(){
return View::make('fans.welcome')
->with('artists', Artist::artists_all())
->with('favorite_artist', Artist::favorite_artist())
->with('pick', FansController::pick_favorite());
}
模特功能:
public static function specific_artist($fbid) {
$specific_artist = DB::table('artists')
->where('artists.fbid', '=', $fbid)
->get();
return $specific_artist;
}
该视图位于“欢迎”页面上。我的问题是如何在我的视图中显示模型数据并确保它从fbid输入中打印出正确的数据?
我试过这样的事情:
@foreach($pick as $p)
<span class="artist_text">{{$p->stage_name}}</span>
<br>
<span class="artist_city">{{$p->city}}</span>
@endforeach
但这不打印任何东西。有任何想法吗?
答案 0 :(得分:0)
我在这里看到很多问题。
public function pick_favorite()
....它做了什么?它只返回一些数据。
public function getWelcome() {
中写道,FansController::pick_favorite()
。假设两者都是相同的方法,您正在访问静态方法,而该方法是非静态的。你收到错误但是你没有看到它,因为你没有定义fail()
。
并且我没有看到声明一个方法的重点是什么,然后你可以直接进行模型调用。
例如,假设我有fooModel
public function index(){}
在控制器中,我可以写,
public function bar()
{
$model = new fooModel;
return View::make(array('param1'=>$model->index()));
}
或者如果我将 fooModel 中的index()
方法声明为静态,那么我可以写,
public function bar()
{
return View::make(array('param1'=>fooModel::index()));
}
现在在你的javascript中,
$('#submit_one').on('click', function(event) {
event.preventDefault();
if(! $(this).hasClass('faded')) {
var fbid = $("input[name='like']:checked").val();
//variable to be collected is fbid
request = $.ajax({
url: "http://crowdtest.dev:8888/fans/pick_favorite",
type: "post", success:function(data){},
data: {'fbid': fbid} ,beforeSend: function(data){
console.log(data);
}
});
to_welcome_two();
}
});
function to_welcome_two()
{
$('#welcome_one').addClass('hidden');
$('#welcome_two').removeClass('hidden');
}
为什么要打印任何数据?你没有要求脚本打印任何东西。代码中的.done
或.success
参数在哪里?
如果你看看你的控制台,你会得到很多php错误,我几乎可以肯定。
建议,你需要学习一些基础知识。例如jquery ajax call。
a basic ajax call can be
var request = $.ajax({
url: "script.php",
type: "POST",
data: { id : menuId },
dataType: "html"
});
request.done(function( msg ) {
$( "#log" ).html( msg );
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
在您的代码中实现它,然后查看它抛出的错误。
第一个将(假设其余代码没问题)静态错误。如果要将其称为静态,请将其声明为静态。但控制器中的静态功能?我认为没有任何目的。
然后开始调试。你的问题是客户端和服务器端。一个接一个地处理。