2010-05-10 3 views
0

누군가 나를 올바른 방향으로 안내 할 수 있습니까? 기본적으로,이 jQuery 코드 조각을 가지고 :jQuery를 사용하여 기본 텍스트 문자열을 mySQL 기반에 저장 하시겠습니까?

$('.bggallery_images').click(function() { 
    var newBG = "url('" + $(this).attr('src'); 
    var fullpath = $(this).attr('src'); 
    var filename = fullpath.replace('img/Bakgrunner/', ''); 

    $('#wrapper').css('background-image', newBG); 

    // Lagre til SQL 
    $.ajax({ 
     url: "save_to_db.php", 
     // The url to your function to handle saving to the db 
     data: filename, 
     dataType: 'Text', 
     type: 'POST', 
     // Could also use GET if you prefer 
     success: function (data) { 
      // Just for testing purposes. 
      alert('Background changed to: ' + data); 
     } 

    }); 

}); 

이 내가 어떤 버튼을 클릭하여 실행되고있다. 실제로는 클릭 핸들러 내에 있습니다.

이 내용을 올바르게 이해하면이 스 니펫은 이미지를 방금 클릭했을 때 원본을 가져 와서 파일 이름만으로 끝납니다. 경고 (파일 이름)를하면 파일 이름 만 표시됩니다. 그래서 이것은 괜찮습니다.

그러나 다음은 "save_to_db.php"라는 PHP 파일에 대한 ajax 호출을 수행하고 data : filename을 보냅니다. 이게 맞습니까? 그런 다음 경고 + 데이터를 수행하는 콜백을 수행합니다.

지금까지 올바른 것 같습니까? 내 PHP 파일 원인

은 다음과 같습니다

<?php 
require("dbconnect2.php"); 
$uploadstring = $_POST['filename']; 
$sessionid = $_SESSION['id']; 
echo ($sessionid); 
mysql_query("UPDATE brukere SET brukerBakgrunn = '$uploadstring' WHERE brukerID=" .$_SESSION['id']); 
mysql_close(); 
?> 

나는 이미지를 클릭

이, JQuery와는 불을 니펫을 내가 경고 상자 출력으로이 PHP 파일의 결과를 얻을 수 있습니다. 나는 변수가 어떻게 든 비어 있다고 생각한다. 알림 때문에 echo ($ sessionid); 이 변수는 세션 ID가 무엇인지 테스트하기 위해 만든 변수입니다. 그리고 아무것도 반환하지 않습니다. 여기서 문제가 될 수있는 것은 무엇입니까?

편집 : 나는 단지 $ uploadstring 변수를 에코하려고 시도했지만 아무 것도 반환하지 않습니다. 그것은 jQuery 스 니펫이 PHP 파일에 변수를 전달하지 않는 것과 같습니다.

+0

OT하지만'var newBG = "url ('"+ $ (this)) .attr ('src ');'라인은'+')''를';'직전에 사용합니다. –

답변

2

을 파일 이름 인으로 보내려고하지만 PHP 코드에서 명명 된 양식 필드를 가져 오는 중입니다. 그래서 당신은 이름이 지정된 양식 필드를 보낼 필요가 :

이처럼 ajax 전화를 변경

:

$.ajax({ 
    url: "save_to_db.php", 
    // The url to your function to handle saving to the db 
    data: {filename: filename}, // <= Change #1 (give jQuery a simple object) 
    dataType: 'text',   // <= Change #2 ('text', not 'Text') 
    type: 'POST', 
    // Could also use GET if you prefer 
    success: function (data) { 
     // Just for testing purposes. 
     alert('Background changed to: ' + data); 
    } 

}); 

귀하의 PHP 스크립트는 이제 POST의 varible는 filename 그 값이 filename 자바 스크립트 변수에서 온다라고 받게됩니다. (당신은 또한이 작업을 수행 할 $.post를 사용할 수 있지만 어쨌든 ajax 단지 래퍼의 ...)

ajax 전화로 간단한 객체를 전달하면 서버에 필드를 보내는 가장 쉬운 방법입니다. jQuery는 객체의 키와 필드 이름을 사용하여 객체를 가져 와서 URL로 인코딩 된 양식 데이터를 생성합니다 (모든 이스케이프 처리). 당신이이 개체를 제공한다면, 예를 들면 :

a=1&b=testing+one+two+three&c=3 

(그것이 우리를 인코딩하는 방법을 참고하십시오.) ajax 자세히보기 :

data: {a: 1, b: "testing one two three", c: 3} 

를 ... 그것은이 URL 인코딩 된 데이터를 전송 docs (그러나 현재 배열 처리에 대한 문서는 무엇입니까?) 자세한 내용은 this bug report을 참조하십시오.

+0

또한 테스트를 위해 서버 측 스크립트에'var_dump ($ _ POST)'를 추가하십시오. –

+0

좋아, 그래서 실제로 파일 이름을 반환합니다 :) 하지만 내가 PHP 파일 내에서 변수의 메아리를 할 때. 그러나 세션 ID는 검색되지 않습니다. 변수를 만들어 내 index.php 파일에서 쉽게 검색 할 수 있습니다. $ session_id = $ _SESSION [ 'id']; 내가 이것을 반향하면 결과는 내 세션 ID 인 '2'입니다. save_to_db.php 파일에서 가져올 수 없습니다. 왜 그런가? –

+0

죄송합니다. 세션 ID를 보유하고있는 것으로 보이는 다른 PHP 파일이 있습니다. 헤더 캐시 리미터 오류를 해결하기 만하면됩니다. 하지만 고맙습니다! 그래도이 문제를 해결했습니다! :) –

관련 문제