0

こんにちは、既存の JSON ファイルのデータを編集して保存しようとしています。コードは次のとおりです -

var newData = { mailTo: 'abc@123.com'};

$.ajax({
type: 'POST',
url: 'jsonHandler.php',
data: newData,
}).done(function( formData ) {
formData = eval('(' + formData + ')');
$('#mail').val( formData.load[0].mailTo );
});

これは chrome と IE で機能しますが、firefox を使用して実行すると JSON が更新されません。

Firefoxで生成されたリクエストヘッダーは次のとおりです(firebugを使用して取得)

Request Headers
Accept  */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length  12
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Host    localhost
Referer http://localhost/gandu/
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
X-Requested-With    XMLHttpRequest

jsonHandler.php コード

<?php
require_once('JSON.php');

    $json = new Services_JSON();

    $json_data = json_decode(file_get_contents('formData.json'), true);

    if (isset( $_POST['formId'])) {
        $json_data['load'][0]['formId'] = $_POST['formId'];
    } else {
        echo 'No text found';
    }

    if (isset( $_POST['mailTo'])) {
        $json_data['load'][0]['mailTo'] = $_POST['mailTo'];
    } else {
        echo 'No text found';
    }

    $output = ($json->encode($json_data));

    file_put_contents('formData.json', $output);

    print ($output);

    ?>

私が間違っていることはありますか?

firebug のエラー -

    SyntaxError: missing ) in parenthetical

a()jquery.min.js (line 2)
    e = Object { url="jsonHandler.php", isLocal=false, global=true, more...}
    n = Object { readyState=4, 

    responseText="No text found{"load":[{..."qq","fmessage":"qq"}]}", status=200, more...}
        r = Object { text="No text found{"load":[{..."qq","fmessage":"qq"}]}"}
        a()jquery.min.js (line 2)
        e = 200
        n = "OK"
        s = Object { text="No text found{"load":[{..."qq","fmessage":"qq"}]}"}
        a = "Date: Sat, 01 Jun 2013 ...ntent-Type: text/html\r\n"
        a()jquery.min.js (line 2)
        e = readystatechange
        i = undefined
        [Break On This Error]   

        (No text found{"load":[{"formId":"form2","mailTo":"def@123.com"}]

エラーを示す警告ボックスを表示します。

4

2 に答える 2