2014-02-27 2 views
3

im new with laravel 4 며칠 전에 시작되었습니다. 내 문제는 간단합니다, 나는 클라이언트 또는 사용자가 변경하고 "부분"보기를 렌더링 콤보 상자 있습니다.Laravel 4 부분보기가있는 아약스

enter image description here

이 처음이다. 의 OnChange는 :

enter image description here

자바 스크립트를 통해 간단한 메시지를 렌더링

내가 "손으로"값을 배치 그것은 단지 부분보기가 표시됩니다 경우 내 문제는 다음과 같습니다

enter image description here

컨트롤러의 내 기능입니다.

public function getTeste1() { 
    $id = Input::get('value'); 
    if($id=="") 
    { 
     $this->layout->content = View::make('home.user'); 
    } 
    else 
    { 
     $this->layout->content = View::make('home.user2')->with('ides',$id); 
    } 
} 

이 내 자바 스크립트 함수 :

이 내 부분이다
<h1>Home</h1> 

<p>Welcome to your Home. You rock!</p> 

<form> 
<select name="users" onchange="showCustomer(this.value)"> 
<option value="0">Select a person:</option> 
<option value="1">Peter Griffin</option> 
<option value="2">Lois Griffin</option> 
<option value="3">Glenn Quagmire</option> 
<option value="4">Joseph Swanson</option> 
</select> 
</form> 
<div id="txtHint"></div> 

:이 내이다

function showCustomer(str) 
{ 
xmlHttp=GetXmlHttpObject(); 
if (xmlHttp==null) 
{ 
alert ("Your browser does not support AJAX!"); 
return; 
} 
var url=""; 
url="?value="+str; 
//url=url+"&sid="+Math.random(); 
// alert(url); 
xmlHttp.onreadystatechange=stateChanged; 
xmlHttp.open("GET",url,true); 
xmlHttp.send(true); 
} 

@if($ides!=0) 
<div id="txtHint"> <b>Person info will be listed here -> {{ $ides }} </b></div> 
@endif 

내가이 문제를 왜 내가 아는, 내가 돈 너희들이 그것이 도움이 될거라는 것을 알고 있다면, 그것을 피하는 법을 알지 못한다.

곤 칼로 모 우라 감사

편집 : enter image description here

따라서, stateChanged 기능 :

function stateChanged() 
{ 
    if (xmlHttp.readyState==4) 
    { 
     document.getElementById("txtHint").innerHTML=xmlHttp.responseText; 

     // alert(document.getElementById("txtHint").innerHTML); 

    } 
} 

JQuery와 기능 내가 당신의 솔루션을 사용 경우는 다음과 같이 표시됩니다 :

<script> 
$(document).ready(function() { 
$("#users").change(function() { 
    $.get('http://localhost/LoginProject/public/home/teste1?value=' + $(this).val(),   function(data) { 
    $("#txtHint").html(data); 
    }); 
}); 
}); 
</script> 
+0

'stateChanged' 기능을 표시 할 수 있습니까? –

+0

명시된 추가 – Ratz

답변

0

URL에 value이있는 경우 부분보기 만 표시하도록 지정 했으므로 알려주십시오.
이 일으키는 문제는

if($id=="") 
{ 
    $this->layout->content = View::make('home.user'); 
} 
else 
{ 
    $this->layout->content = View::make('home.user2')->with('ides',$id); 
} 


변경이 귀하의 컨트롤러 방법을합니다. 대한

public function getTeste1() 
{ 
    $id = Input::get('value', null); 

    $this->layout->content = View::make('home.user')->with('id', $id); 
} 

그리고 볼이

<h1>Home</h1> 

<p>Welcome to your Home. You rock!</p> 

<form> 
    <select name="users" onchange="showCustomer(this.value)"> 
     <option value="0">Select a person:</option> 
     <option value="1">Peter Griffin</option> 
     <option value="2">Lois Griffin</option> 
     <option value="3">Glenn Quagmire</option> 
     <option value="4">Joseph Swanson</option> 
    </select> 
</form> 

<div id="txtHint"> 
    @if ($id) 
     show detail without AJAX call. Since ID is in URL, you can get the info directly 
    @else 
     show info that this container will hold some data after AJAX call 
    @endif 
</div> 

에 그리고 당신의 코드를 의도, 자신의 내가 당신에게 전체 디자인에 대한 간단한 접근 방식을 제공합니다 :

+0

나는 그 문제를 알고 그것을 회피하는 방법을 모르겠다 – Ratz

+0

대답을 확인하십시오. 보기에서 일부 논리를 수행하는 것이 좋습니다. – Andreyco

+0

아마도 귀하의 답변을 주셔서 감사합니다. 이해하지 못 하겠지만 : \하지만 코드를 사용하여 편집했습니다. – Ratz

3

좋아.

컨트롤러에서 아무 것도 건드릴 필요가 없습니다.

은 Ajax 요청 유무에 관계없이 동일한보기를 반환합니다.

레이아웃을 약간 변경하면됩니다.

@if(!Request::ajax()) 
<html> 
.... 
.... //the whole layout 
</html> 
@else 
{{$content}} 
@endif 

간단한 논리.

요청이 아약스가 아닌 경우 전체 템플릿과 함께보기를 반환하십시오.

요청이 ajax 인 경우보기 만 반환하십시오.

+0

나는 약간의 연구를했는데, 약간은이 연구에서 길을 잃었다. 나는 이미 그 견해를 재구성 한 레이아웃을 가지고있다. {{$ content}} 내보기는 간단합니다 partialview를 추가하십시오. 나는 이것에 아주 새롭, 나는 이것을 위해 상당히 고투하고있다. 내가하고 싶은 일은 내 데이터베이스에서 검색하고 페이지를 새로 고치지 않고 해당 데이터로 표를 업데이트 할 수있는 콤보 상자 값입니다. laravel ajax에 대한 자습서가 여러 개 있지만 유용하지 않거나 이해하지 못했을 수 있습니다. 이 구체적인 예를 들어 좀 더 나를 도울 수 있습니까? anwser에 감사드립니다. 어떤 부분에서 문제가 발생했는지 – Ratz

+0

제 예제가 더 유용 할 수 있도록 그 부분을 정확하게 말해주십시오. – itachi

+0

나는 그 dropdow의 div onchange를 내 데이터베이스의 데이터로 업데이트하려고합니다. 하지만 아약스를 사용하고 싶습니다. 페이지를 새로 고치고 싶지 않습니다. 내 요점은 내가 그것을하는 방식으로 작동하지만 사용자가 url을 변경하고 "URL"+ "? value = 2"를 추가하면 예를 들어 내 partialview 만 표시되고 내 컨트롤러 때문에 dropdow가 표시되지 않습니다. 나는 angularjs와 몇 가지 자습서를 찾고 있는데, 그들이하고 싶은 좋은 예가 있습니다. 그 tho를 이해하는 것은 어렵다. 나는 그것을 할 수있는 간단한 방법이있을 것이라고 생각했다. – Ratz