2012-05-06 8 views
0

を私はjQueryの/ JSONでレコードを更新しようとしているが、私はこのエラーを見ている:エラーが発生しました:でSyntaxError: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ブラウザで)バイナリエディタでの出力を確認した後、それをいくつかの部屋を与えることWHERE

$update .= " WHERE ". 

の前にスペースを追加する必要があると思います、前後のゴミ(特にUTF-8 BOM)が原因かもしれません。 – Wrikken

+0

ようこそスタックオーバーフロー!一度 'jQuery'を長い形式で書く必要があることを知っていましたか?あなたのコードを '(function($){....})(jQuery);'にラップすることによって、 'noConflict'が使われていても' $ 'を使うことができます。 – ThiefMaster

+1

また、1つの要素しかないので、そのカンマを削除することができます。 – KBN

答えて

3

おそらくPHPは、返されたドキュメントを有効なJSON文字列にしないように、いくつかのエラーや警告をスローします。 FireBugのようなデバッガを使用して、実際の結果がPHPスクリプトによって返されることを確認してください。

mysql_real_escape_stringlink)のPHPドキュメントに続いて、使用可能なアクティブなMySQL接続がない場合は、エラーがスローされます。多分それがあなたの問題です。

3

問題は、レコードを更新するPHPが失敗し、jsonが出力されないという問題です。

私は、文字列

+0

これは正しいかもしれませんが、与えられたソースでは、SQLクエリは決してMySQLサーバに送られません。したがって、これがエラーの理由であってはなりません。 – Sirko

+1

@sirko、良い点...それはちょうどコードの切り札かもしれないと思った.. –

関連する問題