2013-05-11 5 views
-1

버튼 클릭시 텍스트 상자의 데이터를 저장하고 싶습니다. 나는 아래의 작업을 위해 JQuery AJAX를 사용하고있다. 이 태그를 테마 함수 내에서 만들었습니다.데이터가 JQuery.ajax를 사용하여 저장되지 않음

function theme_user_post_block($vars) 
{ 

$themeUserCommentInput =''; 

$themeUserCommentInput .= '<textarea id="txt_1"rows="1" cols="50"></textarea>'; 

$themeUserCommentInput .= '<input type="submit" value="Post Comment" align="center" 
class="btnPostComment" id="btn_1" />' 
return $themeUserCommentInput; 
} 

이렇게하면 페이지 안에 텍스트 상자와 버튼을 표시 할 수 있습니다. 지금 여기 내 JS 코드는 다음과 같습니다 - 다음과 같이

(function($) 
{ 
Drupal.behaviors.PostComment= { 

attach: function (context, settings) { 
    $('.btnPostComment', context).click(function (event) { 
    var post = "&newcomment=Comment1&logid=log1"; 
    jQuery.ajax({ 
       url: 'postcomment', 
       type: 'POST', 
       dataType: 'json', 
       data: post, 
       success: function (data) { alert(data); }, 
       error: function(jqXHR, textStatus, errorThrown){alert(textStatus + 
    errorThrown);} 
     });    
    }); 
    }      
    } 
    })(jQuery); 

다음 내가 URL 이름을 가진 메뉴 페이지를 생성 : -

function postcomment_menu(){ 
$items=array(); 
    $items['postcomment']=array(
    'title'=>t(''), 
    'type'=> MENU_CALLBACK,  
    'page callback' => 'user_comment_post',   
    'access arguments' => array('access content'), 
); 
return $items; 
} 

function user_comment_post(){ 
global $user; 
$cid = db_insert('user_comment') 
    ->fields(array(  
    'comment_user_id' => $user->uid, 
    'reference_id' => $_POST['logid'],  
    'comment_desc'=>$_POST['newcomment'], 
    'createdon'=>REQUEST_TIME, 
    )) 
    ->execute(); 
    if($cid!=0) 
    { 
    //GetUserComments($i); 
    drupal_json_output("success"); 
    } 
} 

그래서 내가 jQuery를 + 아약스에 필요한 모든 것을 수행 한 기능을 제출 . "Post Comment"버튼을 누르면 "errorundefined"라는 경고 메시지가 나타납니다. 이 경고는 jQuery.AJAX 함수의 오류로 인해 표시됩니다. 또한 사용자 정의 메뉴 콜백도 호출되지 않습니다.

+0

샘플 코드가 올바르게 표시되지 않습니다. 복사하여 붙여 넣기해도 표시되는 코드가 올바른 형식인지 확인하십시오. 그 이유는 소유하고있는 문제가 그것이 아닌지 알 수 없습니다. 예를 들어'textarea'의'id' 속성'txt_1에'' ';' '', 서식을 어지럽히는. – Nope

+0

내 코드 실수로 죄송합니다. 실제 ID의 동적 값은 여기서 단순화하기 위해 정적 값으로 대체되었습니다. 코딩 부분을 편집했습니다. – user1843970

답변

1

은 객체로 데이터를 게시 ... 그리고 게시물의 URL이 .. URL이

var post = {newcomment: 'Comment1',logid:'log1'}; 
+0

내가 언급 한 게시물 개체를 변경하지만 그것은 또한 작동하지 않습니다 및 alertbox.Please 날 ​​게시물 URL이 정확하지 않은 및 실제 제공해야합니다 내게 알려주십시오. 오류가 표시됩니다. user_comment_post 전역으로 $ user 선언하는 것을 잊지() 여기에 있지만 실제 코드에 있습니다. 빠진 것으로서 취급하지 마십시오. – user1843970

+0

url은 서버에서 호출하는 페이지 또는 함수의 경로입니다 ....'postcomment'는 서버 측 기능으로 이동합니다 .. – bipen

+0

postcomment는 URL의 경로입니다. URL 대신 함수 이름을 전달해야한다고 말하고 싶습니까? – user1843970

0

올바른 나는이 문제 끝났다 보이는하지 않습니다 정확한지 확인하십시오. 나는 해결책이나 근본 원인이 무엇인지 모르지만 나는이 문제를 해결하게된다. 나는 jQuery.ajax 함수에서 한 줄 (async : false)을 추가하지 않고 모든 것이 완벽하게 작동한다.

jQuery.ajax ({ URL : 'postcomment', 유형 : 'POST', dataType와 'JSON', 비동기 : 거짓, 데이터 : 포스트, 성공 : 기능 아래의 코드를 참조하십시오 (데이터) { 경보 (데이터) } 오류 : 함수 (jqXHR, textStatus, errorThrown) { 경보 (textStatus + errorThrown) }});

누군가이 행이 무엇을하는지 알면, 우리와 공유하십시오.

관련 문제