2011-01-29 4 views
1

많은 사용자가 로그인하여 "샌드 박스"에 드래그 가능한 "노드"를 만드는 "샌드 박스"를 만들려고합니다. 나는 모든 수정 후에 자동 저장을 할 수 있기를 원하지만 첫 번째 것은 먼저 - 나는 자바에 저장된 자바 객체를 얻으려고한다.JSON/PHP/Mysql으로 자바 객체를 저장하면 사용자가 반환 할 때 다시로드 할 수 있습니까?

저는 Javascript, PHP 및 MySQL을 처음 사용했지만 JSON이이 작업을위한 가장 친한 친구 인 것으로 보입니다.

node1.pos 
node1.name 
node1.content 
node1.siblings 

* 주 : 다음은 노드의 거친 예제가 실제 노드가 많은 특성, 잠재적으로 민감한 정보 일부를 수용합니다.

목표는 사용자가 노드를 조작 (형제, 이름 변경 등) 한 다음 페이지를 다시 방문하면 "샌드 박스"가 노드를 다시 채 웁니다. 모든 올바른 데이터가 연관된 정확한 위치.

캔버스를 채울 함수를 처리 할 수 ​​있다고 생각하지만 MySQL과 Javascript간에 개체를 이동하면 혼란 스럽습니다. 메서드가있는 객체가 문제를 일으킬 수 있습니까?

나를 도울 수있는 도움, 조언 또는 참고 자료가있는 사람이 있습니까?

+1

대답은 아니지만 고려해야 할 흥미로운 점은 다음과 같습니다. https://github.com/zefhemel/persistencejs – fncomp

+0

"메소드가있는 객체로 인해 문제가 발생합니까? _"예. JSON은 함수를 데이터로 저장할 수 없기 때문에 별도의'dataPacket'을 만들었습니다. 서버가 문자열을 반환하면 _load.php_ 서비스 용으로 게시 한 코드를 사용하여 jQuery가이를 자동으로 JSON으로 구문 분석하고 (유효한 JSON 인 경우에만) 자바 스크립트 객체로 끝납니다. – Trinidad

답변

3
  1. 사용자가 보내는 모든 데이터를 저장하는 웹 서비스를 만드는 것이 좋습니다. http://server.net/store.php으로 지정하겠습니다.

  2. 클라이언트는 다음 몇 가지 사용자 자격 증명과 함께, 의미있는 데이터를 JSON으로 직렬화 자바 스크립트를 사용합니다 ...

    var dataPacket = { 
        userCredentials: 77777777, /* whatever is sensible */ 
        nodes: [ {id: 1, posX: 10, posY: 345 }, {id: 2, posX: 5, posY: 136} ] 
    }; 
    
  3. 클라이언트는 jQuery를 + AJAX와 서버에 데이터를 보낼 것입니다. ..

    $.ajax({ 
        type: "POST", 
        url: "http://server.net/store.php", 
        dataType: "json", 
        data: dataPacket 
    }); 
    
  4. 그런 다음, 서버 측에 데이터가 유효한 사용자 자격 증명을 검사 할 것입니다 후 데이터베이스의 일종으로, 저장 진행할 수, 실제로 수신 된 JSON 인코딩 된 데이터, 인 그냥 평범한 문자열.

  5. 데이터베이스에서 읽고 이전에 저장된 데이터를 반환하는 웹 서비스를 만듭니다. http://server.net/load.php으로 지정하겠습니다. 사용자가 그 데이터를 요청 자바 스크립트를 사용하는 것이 이전에 클라이언트를 무엇을하고 있었는지로드해야

  6. ... 코드가 jQuery를에 따라 다릅니다 만 제공되는 것을

    $.ajax({ 
        type: "POST", 
        url: "http://server.net/load.php", 
        dataType: "json", 
        data: { 
         userCredentials: 77777777, /* whatever is sensible */ 
        } 
        success: function(dataPacket) { 
         /* process the received dataPacket */ 
        } 
    }); 
    

주 예를 들어, 실제로 테스트하지 않았습니다.


은 참조 :이 도움이

희망을.

신의 축복!

+0

감사합니다. UI 용 JQuery를 사용하고 있으므로 다른 곳에서 사용하는 것은 문제가되지 않습니다. 당신은 사용자 자격 증명에 대해 자세히 설명 할 수 있습니까? 그것은 사용자가 데이터를 전송하는 식별자입니까? – jlmakes

+1

자격 증명은 사용자 이름처럼 간단 할 수 있습니다. 좀 더 정교하게하려면 login + password를받을 수있는 로그인 서비스를 만들 수 있습니다. 내부 ID 유형 (예 : 연결된 사용자 이름과 비밀번호의 암호화 된 버전 또는 기타)을 반환합니다. 이 ID는 사용자 이름 + 암호를 항상 보내지 않으려는 자격 증명으로 사용됩니다. 따라서 처음으로 로그인 정보를 보내면 클라이언트는 서버가 반환 한 ID를 사용합니다. 그러나 그것을 처리하는 훨씬 더 좋은 방법이있을 수 있습니다. – Trinidad

1

내 머리 위로 떨어져 제안 :

저장 즉석에서 편집 :

당신이 분명히 원하는 것 (아무것도하지 않는 PHP 페이지를 작성하지만, 사용자의 POST 요청을 수락 랜덤 스는 무작위 데이터로 페이지를 쳐들어 올릴 수 없도록하는 인증 방식을 사용합니다.하지만 또 다른 문제입니다.) 이 페이지는 전적으로 사용자로부터 AJAX 요청을 수락 할 책임이 있습니다.

jQuery의 UI 라이브러리 (, 특히)를 사용하여 샌드 박스 페이지를 새로 만듭니다. 미리 작성된 것을 사용하고 직접 작성하지 마십시오. 이것은 AJAX 처리 페이지에 의해 데이터베이스에 이미 저장된 값을로드하는 PHP 페이지입니다. jQuery의 drag and drop methods을 사용하면 요소가 이동 될 때마다이를 감지 할 수 있습니다. 이동이 끝나면 jQuery의 .ajax 기능을 사용하여 요소 및 좌표를 ajax 처리 페이지로 보냅니다.

다음 번에 사용자가 로그인하면 필요에 따라 요소를 추가/배치하는 것이 쉽습니다.

+0

http://labs.inversepenguin.com에는 Jquery UI Draggable과 Mapbox가 결합 된 "노드"와 "샌드 박스"가 있습니다. 노드는 아직 자바 스크립트 객체에 대한 연관성이 없지만 Ajax를 사용하여 PHP 처리 페이지에 제출할 생각이 듭니다. POST 데이터를 몇 가지 다른 장소/방법으로 가져와야합니다. – jlmakes

+0

거의 같은 생각이었습니다;) – Trinidad

관련 문제