2012-05-06 11 views
0

나는 JQuery와/JSON과 레코드를 업데이트하기 위해 노력하고있어하지만 난이 오류보고 있어요 :오류가 발생했습니다 : 구문 에러를 : JSON.parse : 예기치 않은 문자

An error has occurred:

[object Object]

parsererror

SyntaxError: JSON.parse: unexpected character

내 JS :

jQuery('#commentForm').live('submit', function (event) { 
event.preventDefault() 


jQuery.ajax(edit_url, { 
    data: jQuery(this).serialize(), 
    dataType: 'json', 
    type: 'POST', 
    success: function (data) { 
     if (data.error === 'OK') { 
      alert('ok c good') 
     } else { 
      alert('hi' + data.error) 
     } 
    }, 
    error: function(x,y,z){ 
     alert('An error has occurred:\n' + x + '\n' + y + '\n' + z); 
    } 
}) 

return false; 
}) 

그리고 내 PHP :

$ret = array(
    'error'    => 'OK', 
); 
$update = 
    "UPDATE crm_set_users SET ". 
     "crm_set_users_civilite = '".mysql_real_escape_string($crm_set_users_civilite)."',". 
     "crm_set_users_nom = '".mysql_real_escape_string($crm_set_users_nom)."',". 
     "crm_set_users_prenom = '".mysql_real_escape_string($crm_set_users_prenom)."',". 
     "crm_set_users_email = '".mysql_real_escape_string($crm_set_users_email)."', ". 
     "crm_set_users_telephone = '".mysql_real_escape_string($crm_set_users_telephone)."', ". 
     "crm_set_users_portable = '".mysql_real_escape_string($crm_set_users_portable)."'"; 

if($crm_set_users_photo != ""){ 
    $update .=", crm_set_users_photo = '".mysql_real_escape_string($crm_set_users_photo)."'"; 
} 

$update .= 
    "WHERE ". 
     "crm_set_users_id = '".mysql_real_escape_string($user_id)."'"; 




echo json_encode($ret); 
exit; 

내 PHP는 경우 :

$ret = array(
    'error'    => 'OK', 
); 
echo json_encode($ret); 
exit; 

후 작동 ... 당신이 도움을

TKS!

+0

이 (NOT 브라우저에서) 16 진수 편집기에서 출력을 확인 문자열의 나머지 후 약간의 공간을 제공하기 위해 WHERE

$update .= " WHERE ". 

앞에 공백을 추가 할 필요가 있다고 생각 전후의 쓰레기 (특히 UTF-8 BOM)가 원인 일 수 있습니다. – Wrikken

+0

스택 오버플로에 오신 것을 환영합니다! 'jQuery'를 긴 형식으로 한 번 써야한다는 것을 알고 계셨습니까? '(function ($) {....}) (jQuery);'에 코드를 래핑하면'noConflict'가 사용되었는지 여부와 관계없이'$'를 사용할 수 있습니다. – ThiefMaster

+1

또한 요소가 하나뿐이므로 쉼표를 제거 할 수 있습니다. – KBN

답변

3

아마도 PHP는 반환 된 문서를 유효한 JSON 문자열이 아니게 만드는 몇 가지 오류 또는 경고를 throw합니다. FireBug과 같은 디버거를 사용하여 PHP 스크립트에서 반환되는 실제 결과를 확인하십시오.

mysql_real_escape_string (link)의 PHP 문서 다음에 유효한 MySQL 연결이없는 경우 오류가 발생합니다. 어쩌면 그건 네 문제 야.

3

문제는 레코드를 업데이트하는 PHP가 실패하고 json이 출력되지 않아야한다는 점입니다.

나는, 당신이

+0

이것은 정확할 수도 있지만, 주어진 소스에서 SQL 쿼리는 절대로 MySQL 서버로 전송되지 않습니다. 따라서 이것이 오류의 원인이되어서는 안됩니다. – Sirko

+1

@sirko, 좋은 지적은 ... 코드의 단순한 조각일지도 모른다라고 생각했다. –

관련 문제