problem writing to json file

+1 Marie Goodwyn · November 17, 2014
I am new at this so pardon my ignorance. I am trying to make a form to send data to a json file that will be later used to create a quiz with edge Animate. the quiz works fine with a json file I wrote. Now I want the teachers to be able to add questions to the json file from the form so they do not have to touch the json file.
I get the data posted to the html but not to the file.
Testing here: http://mjpagedesign.com/testphp/

Here is the code
PHP
if (!isset($_POST['params'])) {
        $params = $_POST['params'];
        $jsonObject = json_encode($params);
        file_put_content('myData.json', $jsonObject, FILE_APPEND);
echo '$jsonObject';
    }

html:

<script type="text/javascript">
     $(document).ready(function() {
$("#submit").click(function(){
         var postData = {
                question: $("#question").val(),
                answer1: $("#answer1").val(),
answer2: $("#answer2").val(),
answer3: $("#answer3").val(),
answer4: $("#answer4").val(),
correctAnswer: $("#correctAnswer").val(),
                image: $("#image").val(),
                feedbackInfo: $("#feedbackInfo").val()
            };

var params = JSON.stringify(postData);
$.ajax({           
            type: "POST",
data: params, 
contentType:"application/json",
url: "submit.php",                  
            success: function (data) {
$("#myData").html("this data was posted: " + params);
            },
error: function(e){
               alert('failed');
            }
        });
});

    }); 
</script>

<form id="newQuestion" name="newQuestion" method="post">
<label for="question">Question:</label>
    <input id="question" name="question" type="text" /><br>
<label for="answer1">Answer 1 or distractor: </label>
    <input id="answer1" name="answer1" type="text" /><br>
<label for="answer">Answer 2 or distractor: </label>
    <input id="answer2" name="answer2" type="text" /><br>
<label for="answer">Answer 3 or distractor: </label>
    <input id="answer3" name="answer3" type="text"  /><br>
<label for="question">Answer 4 or distractor: </label><br>  
    <input id="answer4" name="answer4" type="text"  /><br>
<label for="correctAnswer">Correct answer number: </label>
    <input id="correctAnswer" name="correctAnswer" type="text" /><br> 
<label for="image">Image name (Exampe: for house.png simply enter: house): </label>
    <input id="image" name="image" type="text"  /> <br>
<label for="feedbackInfo">Info about the question: </label>
    <input id="feedbackInfo" name="feedbackInfo" type="text" /> <br>        
<input type="button" value="submit" name="submit" id="submit"/>  
</form>

Post a Reply

Replies

- page 3
Oldest  Newest  Rating
0 Marie Goodwyn · November 21, 2014
I like the way everything is done - clean and simple. simple is always better and easier to understand!
-1 Marie Goodwyn · November 21, 2014
I tried FF and Chrome try to save the file, open the dialog box and fait. Safari and IE give a server error.

Here is what I have noticed looking at the server (godaddy) folders. The file is written at the root folder (testphp3) as Data\MyData.json.  and as you can see it is 583 bytes. However there is a file in the Data folder and it is 0 bytes. 

So I am thinking that something is wrong when the file is created and data is sent to it. 


/images/forum/upload/2014-11-21/57b1f6572ceceda7d7368307d827cd10.png
-1 Marie Goodwyn · November 21, 2014
OK. I think the path is wrong using \ instead of / but even though I changed them in all the files I still cannot download.

The file cannot be found in the server. Is there an extra / in front?
/images/forum/upload/2014-11-21/941bf61c2dd6c74fdae85a8124f5f74d.png
0 Marie Goodwyn · November 21, 2014
Under no file I get this info:
/images/forum/upload/2014-11-21/f05ae2210e6750c2e6d6b1c22f218442.png
So I think that the download.php might have something wrong but I do not know enough about php to know besides the fact that the path was written wrong.

After I corrected the path, I do get data into the file at Data/myData.json. However there is an id written to it. I am not sure whether this is normal. And still file in not found on the server.
The download script has another error since it mentions a pdf file not a json file. It still does not work however with this change.
Also, I used a different download script and it still cannot find the file though it is there and the path is right.


[{"id":"546f4af710b92","question":"What is the color of charcoal","answer1":"blue","answer2":"red","answer3":"black","answer4":"white","correctAnswer":"3","image":"charcoal","feedbackInfo":"The color of charcoal is black."},{"id":"546f4b37dea83","question":"What is the name of the American Emperor","answer1":"Washington","answer2":"Obama","answer3":"Regan","answer4":"Bush","correctAnswer":"2","image":"obama","feedbackInfo":"Obama thinks he is the emperor and many believe it."}]
0 Marie Goodwyn · November 21, 2014
OK. I used your download php file and another one I found and either one shows the problem that it does not find the file. However the file is there and used for all the other scripts.

Do you think that json is not permitted for download maybe?

Other script here: http://www.webinfopedia.com/php-file-download-script.html

Testing site here:
http://mjpagedesign.com/testphp3/
0 Marie Goodwyn · November 22, 2014
Hello,
OK. This corrected the problem and the edit file did not need to change. So this is so cool. 
I have been swamped with work and I still have a lot of work this weekend so I have not totally gone through all the files to try to understand the php and javascript code but this is totally on my agenda as well as finishing the tutorials here and try to write some sample files for practice  but your help has been amazing and I can so grateful you took the time to basically do it all.  
It is important because I will probably add some changes in the future as I am expecting to add different types of questions in the quizzes. So the json structure will probably change since I will add questionType and each will have a different structure. 
But this is not for now so I am very happy with what I have now.
Again THANKS!!!

PHP

126,685 followers
About

Server-side, HTML embedded scripting language used to create dynamic Web pages.

Links
Moderators