2012-05-04 2 views
2

그래서 PHP 파일은 다음과 같이 (아약스 호출) 문자열 반환문자열 구분 아약스 호출

$output = $sessID."###".$sessEmail."###".$sessFirstName."###".$sessLanguage."###".$sessRememberMe; 

와 자바 스크립트 내가 수행

if (reply.indexOf("###") >= 0) { 
    arrayReply = reply.split("###"); 
    user.ID = arrayReply[0]; 
    user.Email = arrayReply[1]; 
    user.FirstName = arrayReply[2]; 
    user.Language = arrayReply[3]; 
    user.RememberMe = arrayReply[4]; 
    } 

문제가 발생할 수있는 경우의 부품 대답은 "###"을 사용하는 구분 기호를 포함합니다. 그런 상황에서 내가 뭘 할 수 있니? 구분 기호를 좀 더 복잡하거나 희귀하게 만드는 것은 제 생각에는 해결책이 아닙니다.

추신 : JSON을 사용해 보았지만 서버 측은 저속 서버입니다.

최종 편집 :

서버 측의 JSON은 쥘 다시 아래 말했듯이, 그러나 (100.000 통화 430ms) 및 병목 될 수 없습니다 플러스 필요가 없다, 클라이언트 측에 대해 같은 느린이며, - 바퀴를 끄십시오. 한 가지 더 많은 해결책이있었습니다 : bin2hex()는 php [430ms에서 240로 시간을 줄였습니다] 그리고 나서 javascript에서 hex2string 함수로 문자열을 되 찾으십시오. 그러나 노력할 가치는 없습니다. JSON입니다. 다들 감사 해요!

+2

한 이후 addslashes 또는는 mysql_real_escape_string은)는 왜 당신을 해달라고 잠시왔다 JSON 또는 XML 형식의 PHP에서 해당 값을 전송하십시오. – Dhiraj

+0

JSON은이 상황에서 훨씬 더 의미가 있습니다. 그러나 CSV 형식을 고집하는 경우 '' '와 같은 추가 필드 구분 기호를 사용하고 값 필드에 나타나지 않는지 확인하십시오 (즉, 바꾸기). – Jules

답변

0

json을 사용할 수 있습니다.

How to JSON decode array elements in JavaScript?

+0

JSON을 시도했지만 서버 측 : 6 배 느리게, 클라이언트 측 (중요하지 않음)은 5-9 배 느리다. – MIrrorMirror

+0

그것은 믿기 어렵다. 당연히, 전체 과정은 다음과 같다. 좀 더 느리지 만 여섯 번 소리가 많이 나는 것 같아요. 게다가 현실 세계에서 이것이 어떻게 문제가되는지는 알 수 없습니다. 성능 요구가 엄격한 경우 왜 PHP를 처음 사용합니까? : S – Jules

+0

나는 100.000 건의 호출로 벤치마킹을했는데 json은 435ms 였고 간단하게 연결하는 것은 72ms 였고 서버 측은 6 배가되었습니다 – MIrrorMirror

1

하나의 옵션

http://php.net/manual/en/function.json-encode.php 대신 JSON 객체를 사용하는 것입니다.

PHP를 들어

(json_encode 사용) : JS 들어

$output = json_encode(array(
    "sessid" => $sessID, 
    "sessEmail" => $sessEmail, 
    "sessFirstName" => $sessFirstName, 
    "sessLanguage" => $sessLanguage, 
    "sessRememberMe" => $sessRememberMe 
)); 

이 (jQuery method 사용) :

$.getJSON("/path/to/script.php", function(reply) { 
    user.ID = reply.sessid; 
    user.Email = reply.sessEmail; 
    user.FirstName = reply.sessFirstName; 
    user.Language = reply.sessLanguage; 
    user.RememberMe = reply.sessRememberMe; 
}); 

을 그렇지 않으면, 당신은 가능성이 분야에서 찾을 수 없습니다 다른 구분 기호를 사용할 수 있습니다 (또는 필드 전체에서 대체 할 수 있습니다). 예 중 하나는 개행 기호 (\n)를 사용하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 JSON은 서버 측과 클라이언트 모두에서 매우 느립니다. 서버 측에서는 6 배 느리고 그것이 중요하다고 생각합니다. – MIrrorMirror

+0

@ user1032650'\ n'을 구분 기호로 사용하는 것은 어떻습니까? – VisioN

+0

그것은 좋은 해결책이 될 것입니다, 그러나 나는 어떤 구분 기호를 사용하든, 자바 스크립트에 의한 악의적 인 사용자가 그것을 삽입 할 수 있다고 두려워합니다. – MIrrorMirror

1

독자적인 형식이있는 경우 왜 자체 형식을 개발해야합니까? 사용 JSON :

$output = json_encode(array('sessionID'=>$sessID,'sessionEmail'=>sessEmail,'sessionFirstName'=>$sessFirstName,'sessLanguage'=>$sessLanguage,'sessRememberMe'=>$sessRememberMe)); 

그리고 Javsascript 측

당신이 당신의 프레임 워크는 많은 가능성 등 JQuery와 inbuild 기능의 일종을 가지고 사용 http://www.javascriptkit.com/dhtmltutors/ajaxgetpost4.shtml 경우 또는 참조 같은 그러나 당신이 원하는 경우 http://api.jquery.com/jQuery.getJSON/

로 귀하의 ### - 구분 기호를 사용하려면 단순화 및 공간을 위해 "#"로 줄이는 것이 좋습니다. 그런 다음 "\"와 같은 이스케이프 문자를 소개합니다. 따라서 프리 패스에서 입력 내용을 구문 분석하고 출력에서 ​​# 번을 #으로 교체합니다. 당신 만 번호로 분할하지 "#"에 의해

2

만약 당신이, JSON으로 인코딩하면 다음을 시도 할 수있는 것보다 느린 말한대로

$output = '"' . some_kind_of_escape_function($sessID).'","'.some_kind_of_escape_function($sessEmail).'","'.some_kind_of_escape_function($sessFirstName).'","'.some_kind_of_escape_function($sessLanguage).'","'.$sessRememberMe.'"'; 

및 특별 정규식을 사용하여 문자열을 분할 할 수 있습니다 물론 some_kind_of_escape_function을 적절한 php 함수로 대체하십시오 (예.나는 PHP 개발 때문에 가장

는 그 다음 쉼표로 분리하는 간단한 사건의 요구에 맞는 하나를 선택 완료 및 제거 따옴표