2012-06-18 3 views
1

이 원래 함수입니다. 내가 그냥 조금 압축하려면, 완벽하게 작동합니다 :Ajax/jQuery Post 함수를 jQuery로 변환하면 여기

<script type='text/javascript'> 
function searchmusic(){ 
var ajaxRequest; 

try{ 
    ajaxRequest = new XMLHttpRequest(); 
} catch (e){ 
    try{ 
     ajaxRequest = new ActiveXObject('Msxml2.XMLHTTP'); 
    } catch (e) { 
     try{ 
      ajaxRequest = new ActiveXObject('Microsoft.XMLHTTP'); 
     } catch (e){ 
      alert('Your browser broke!'); 
      return false; 
     } 
    } 
} 
ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 
     var ajaxDisplay = document.getElementById('searchresults'); 
     ajaxDisplay.innerHTML = ajaxRequest.responseText; 

    } 
} 
var search = document.getElementById('search').value; 
var params = 'search=' + search; 
ajaxRequest.open('POST', 'getsearch.php', true); 
ajaxRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
ajaxRequest.send(params); 

} 
</script> 

나는이 기능을 약간 압축하려고를, 그래서 내가 jQuery를 사용하여 복제하는 것을 시도했다 :

<script> 
function searchmusic(){ 
var search = document.getElementById('search').value; 
$.ajax({ 
type: 'POST', 
url: getsearch.php, 
async: true, 
data: 'search=' + search, 
success: function(data) { 
$('#searchresults').load(data); 
} 
}); 
} 
</script> 

을하지만 I 이 함수가 제대로 작동하지 않습니다. 누군가 내가 실수를 한 이유와이 기능이 작동하지 않는 이유를 말해 주시겠습니까? 아니면이 새로운 기능이 원래의 기능처럼 작동하지 않을 수 있습니다. 나는 모른다. 그러나 어떤 도움이라도 크게 평가 될 것이다, 고마워한다!

+0

URL 주위에 따옴표가 없습니다. 복사 또는 과거 문제입니까 아니면 코드에 있습니까? – Ariel

+0

@Ariel. 앞으로 10 초 ... :) – gdoron

+0

그건 내 잘못이야, 나는 따옴표를 잊었다. 나는 그것들을 추가했고 기능은 여전히 ​​작동하지 않는 것처럼 보인다. – Eggo

답변

1
url: getsearch.php, 

success: function(data) { 
    $('#searchresults').load(data); 
} 

success: function(data) { 
    $('#searchresults').html(data); 
} 

해야

url: 'getsearch.php', 

수 또한 var search = document.getElementById('search').value; 괜찮습니다하지만 당신은 jQuery을 사용하고 있기 때문에 정도로 대신에 의해 var search = $('#search').val()를 사용한다 기본 async is true 그래서 너는 그것을 ommit 수 01 또한은 $.post 일 수 있으므로 type: 'POST'도 삭제할 수 있습니다.

+0

완벽하게 작동합니다. 정말 고마워요. – Eggo

+1

팁을 주셔서 감사합니다. 정말 감사드립니다. – Eggo

+1

당신은 환영합니다 :-) –

1

변경 :

url: 'getsearch.php', // A string with the URL. 

변경 :

url: getsearch.php, // The property php of the getsearch variable 

으로

$('#searchresults').load(data); 

사람 :

$('#searchresults').html(data); 
+0

나는 그것을했는데 여전히 작동하지 않는 것 같지만 그 정보를 주셔서 감사합니다. 분명히 제 스크립트에 문제가있었습니다. – Eggo

+0

@ 에고. 'load'도 변경하십시오. – gdoron

+0

완벽하게 작동합니다. 도움을 주셔서 감사합니다. – Eggo

0

waaaay를보다 컴팩트 :

function searchmusic(){ 
$("#searchresult").load("getsearch.php", {search: $("#search").val()}); 
} 

AJAX와 결과가 요소 내부에 가야 할 때마다 함수가 필요합니다 :) 모두

당신은 .load()를 사용할 수 있습니다. 객체로 전달 된 매개 변수는 GET 호출이 아닌 POST를 수행하도록합니다. 그래서 기능을 많이 줄일 수 있습니다.

관련 문제