2012-10-03 7 views
1

다음은 키워드를 입력하고 검색 엔진을 선택한 다음 "검색"버튼을 눌러 검색하는 작은 프로그램의 코드입니다. 그러나 Google은 나에게 POST를 남겨 두지 않는다. 내가 뭘 할 수 있니?Google에 게시 할 수 없습니까?

편집 : Yahoo와 Bing은 잘 작동합니다.

ERROR

405. That’s an error. 

The request method POST is inappropriate for the URL 
/search?q=computer. That’s all we know. 

HTML

<form name="search" action="" method="Post" onSubmit="redirect()"> 
<input type="text" name="keyword"><br /> 
Google<input type="radio" name="ch" checked> 
Yahoo!<input type="radio" name="ch"> 
Bing<input type="radio" name="ch"><br /> 
<input type="submit" value="Search"> 
</form> 

, 제대로 포맷되지 않은 자바 스크립트

<script type="text/javascript"> 
var searchengine=[ 
"http://google.com/search?q=", 
"http://search.yahoo.com/search?p=", 
"http://bing.com/search?q=" 
]; 

function redirect() 
{ 
    var radioButtons = document.getElementsByName("ch"); 
    for (var x = 0; x < radioButtons.length; x++) { 
     if (radioButtons[x].checked) 
     { 
      document.search.action = searchengine[x] + document.search.keyword.value; 
     } 
    } 
} 
</script> 

답변

4

하지만 Google은 나를 POST로 남겨 두지 않습니다. 내가 뭘 할 수 있니?

사용 GET보다는 양식에 POST, 아니면 그냥 window.location에 관련 URL을 지정합니다.

다음은 후자의 예입니다. 기타 변경 사항 :

  • 일부를 label 개 추가했습니다.
  • 선택한 라디오 버튼을 일치시키는 방식을 변경하고 searchengine을보다 강력하고 유지 관리하기 쉽게 변경했습니다.
  • 검색 양식의 이름이 변경되었습니다. 이 객체가 window 객체에 버려지기 때문에 "검색"과 같은 간단한 단어는 사용하지 마십시오.
  • 키워드를 올바르게 인코딩했습니다 (URI 매개 변수를 인코딩해야 함).

Live copy | Live source

HTML :

<form name="searchForm" action="" method="GET" onSubmit="return doSearch()"> 
<input type="text" name="keyword"> 
    <br> 
    <label>Google<input type="radio" name="ch" value="google" checked></label> 
    <label>Yahoo!<input type="radio" name="ch" value="yahoo"></label> 
    <label>Bing<input type="radio" name="ch" value="bing"></label> 
    <br> 
    <input type="submit" value="Search"> 
</form> 

자바 스크립트 :

var searchengine = { 
    "google": "http://google.com/search?q=", 
    "yahoo": "http://search.yahoo.com/search?p=", 
    "bing": "http://bing.com/search?q=" 
}; 
function doSearch() { 
    var frm, index, cb; 

    frm = document.searchForm; 
    if (frm && frm.ch) { 
    if (frm.ch) { 
     for (index = 0; index < frm.ch.length; ++index) { 
     cb = frm.ch[index]; 
     if (cb.checked) { 
      window.location = searchengine[cb.value] + 
      encodeURIComponent(frm.keyword.value); 
     } 
     } 
    } 
    } 

    return false; // Cancels form submission 
} 
+0

GET 기능이 없습니다. – a1204773

+0

window.location을 완전히 잊어 버렸습니다 ... 고마워 ... – a1204773

+0

@Loclip : 양식 필드가 정확하면'GET '이 작동합니다. 구체적으로 말하자면,'keyword' 필드는'q'이어야하고, 제출하고자하는 URL에서'q'를 제거해야합니다. 왜냐하면 Google은'q'를 검색 용어로 기대하기 때문입니다. –

0

"http:google.com/search?q=" ..

이시도

+0

사실이지만, 우리는 그가이 문제가 아니라고 점점 오류에서 알 수 있습니다. –

+0

방금 ​​내가 잘못한 것을 복사했습니다 ... 원본에 고정되어 있습니다 ... 문제가 아닙니다. – a1204773

관련 문제