2009-10-16 3 views
1

'태그를 만들'양식이 있습니다. 아래의 jQuery 코드 사용하기.공간에서 jquery 결말 문자열

$("#createtag").submit(function() { //same as above, but for form submit instead of button click 
    var newtag  = $('#newtag').attr('value'); 
    var type_id  = $('#type_id').attr('value'); 
    var company_id  = $('#company_id').attr('value'); 
     $('#createtag').load("../contacts/action_createtag.php?newtag="+ newtag + "&type_id=" + type_id + "&company_id=" + company_id).append('#createtags'); 
    return false; 
    }); 

하지만 'newtag'변수에 공백이 포함되어 있으면 그 부분이 끝나는 것을 알고 있습니다. , 불을 지르고 통해 보는 경우 프로그래머 매개 변수는 다음과 같이 나타납니다 공백없이 :

company_id 5495 
newtag test 
type_id 2 

그러나 공간이 입력 될 때, 그것은 다음과 같이 나타납니다 : 이런 일이 될 수있는 이유

newtag test 

아무도 알고 있나요? 로드 된 페이지에 적절한 변수를 전달하지 않는 이유는 무엇입니까?

미리 감사드립니다.

라이언

답변

11

사용 encodeURIComponent() :

$('#createtag').load("../contacts/action_createtag.php?newtag="+ 
    encodeURIComponent(newtag) + "&type_id=" + encodeURIComponent(type_id) + 
    "&company_id=" + encodeURIComponent(company_id)).append('#createtags'); 
+0

저에게 백만 시간을 절약했습니다. – Fergus

1

난 당신이 공간으로 전달할 경우는 URL의 끝을 표시하기 때문에 당신이 URL에 %20 같은 공간을 인코딩해야합니다 생각합니다. jQuery로드가 자체적으로 이스케이프하는 특수 문자를 사용하지 않는다고 생각합니다. 값에

+0

공간은이 예에서 문제가 있지만 누군가가 현장에서 앰퍼샌드 무엇을 넣으면? – nickf

1

가에 encodeURI로 newtag 값을 인코딩()

$('#createtag').load("../contacts/action_createtag.php?newtag="+ encodeURI(newtag) + "&type_id=" + encodeURI(type_id) + "&company_id=" + encodeURI(company_id)).append('#createtags');