これは私をバタバタさせています...
私は CodeIgniter フレームワークを使用しており、その中で AJAX 関数の素敵な php 側が完全に機能しています (& が呼び出されています):
function save_new_schedule_set() {
//do stuff...
echo json_encode($arrResult);
}
ステップスルー デバッグを使用すると、IS が正しい結果を生成していることがわかります。つまり、次のようになります。
{"id":128}
ただし、どういうわけか、この幸せな結果が呼び出し元 (jquery) 関数によって返された場合:
function SaveSchedule() {
$.ajaxSetup({
dataType: 'json',
type: "POST",
success: function(data){ alert('Working'); },
error: function(o,c,m) {
alert(m + " : " + o + " : " + c);
}
});
var $url = getPHPinit_AddEvent("base_url") + getLink_AddEvent("save_schedule");
$.post($url, {
"description" : $description,
"start_time" : $startTime,
"end_time" : $endTime
}, "json");
}
success() ではなく常に error() をトリガーします。具体的には:
SyntaxError: JSON.parse: unexpected character : [object Object] : parsererror
firebug を使用して検査すると、error().o.responseText には期待される結果が含まれています...
{"id":128}
...しかし、CodeIgnitor によってそこに置かれたように見える、大量の ActiveRecord ジャンクが先頭に追加されています。
<div style="border: 1px solid rgb(153, 0, 0); padding-left: 20px; margin: 0px 0px 10px;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: array_keys() expects parameter 1 to be array, object given</p>
<p>Filename: database/DB_active_rec.php</p>
<p>Line Number: 1109</p>
</div>
<div style="border: 1px solid rgb(153, 0, 0); padding-left: 20px; margin: 0px 0px 10px;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: sort() expects parameter 1 to be array, null given</p>
<p>Filename: database/DB_active_rec.php</p>
<p>Line Number: 1110</p>
...
</div>{"id":128}
そして明らかに、余分なジャンクはすべてパーサーを爆破します。
以前にこの問題に遭遇した人はいますか? どうすればそこから抜け出せるのでしょうか?
ありがとうございました!!!
PS: 呼び出しページには正常に動作している他の AJAX 呼び出しがあるため、これは特に不可解です。