Ajax HTTP请求在请求主体中使用数组更改JSON

时间:2017-08-10 16:39:41

标签: javascript jquery json ajax httpresponse

HTTP请求的JSON响应主体在服务器端失真。它有一个键,它的元素是一个数组。这是我使用jQuery ajax的HTTP请求:

function dbInsert(event_arr) {
    $.ajax({
        url: "http://localhost:5000/insertdata",
        type: "POST",
        data: JSON.stringify(event_arr),
        success: function(events) {
            console.log("TestInsert was successfully executed");
        },
        error: function(textStatus, errorThrown) {
            console.error("The following error occurred: " + textStatus, errorThrown);
        }
    });

当我将JSON.stringify(event_arr)打印到控制台时,它就是这样的:

{"results": [{"event_client": "name1","event_date": "date1"}, {"event_client": "name2", "event_date": "date2"}]}

然后,在服务器端,这是我尝试理解响应主体并使用JSON格式的各种尝试:

// returns [object, Object], cannot be passed into JSON.parse
console.log(request.body);

var temp = JSON.stringify(request.body); 
var temp2 = JSON.parse(temp); 

// prints {"{\"results\":":{"{\"event_name\":\"name1\",\"event_date\":\"date1\"},{\"event_name\":\"name2\",\"event_date\":\"date2\"}":""}}
console.log(temp);

// prints { '{"results":': { '{"event_name":"name1","event_date":"date1"},{"event_name":"name2","event_date":"date2"}': '' } }
console.log(temp2);

在我的dbInsert()中调用的JSON.stringify()似乎弄乱了如何读取JSON,我不知道如何解决这个内部格式错误!

1 个答案:

答案 0 :(得分:0)

您需要在 <?php $userId= $_GET['id'];//get user id you can use session also if (isset($_POST['submit'])){ $username = $_POST['username']; $email = $_POST['email']; $password = $_POST['password']; $passwordConfirm = $_POST['passwordConfirm']; $terms = $_POST['terms']; if (($password===$passwordConfirm) and ($terms===1)){ $query = "UPDATE members SET username = :username ,email = :email," ."password = :password WHERE id = :id"; $stmt = $db->prepare($query); $stmt->bindParam(':username',$username, PDO::PARAM_STR); $stmt->bindParam(':email', $email, PDO::PARAM_STR); $stmt->bindParam(':password', $password, PDO::PARAM_STR); $stmt->bindParam(':id',$userId, PDO::PARAM_INT); } } $query = "SELECT * FROM `members` WHERE id = `$userId`"; //Get user info $sth = $db->prepare($query); $sth ->execute(); $result = $sth->fetchAll(PDO::FETCH_ASSOC); if ($result) { // output data of each row foreach($result as $row){ $username = $row['username']; $email = $row['email']; $password = $row['password']; } } ?> <form method="post" class="form-horizontal" action="<?php filter_input(INPUT_SERVER, 'PHP_SELF', FILTER_SANITIZE_FULL_SPECIAL_CHARS); ?>"> <fieldset> <legend>Edit My Account </legend> <div> <label class="label" for="username">Username</label> <input class="user" type="text" name="username" id="username" value="<?php echo $username ?>" tabindex="2" required /> </div> <div> <label class="label" for="email">Email</label> <input class="email" type="email" name="email" id="email" value="<?php echo $email?>" tabindex="3" required /> </div> <div> <label class="label" for="password">Password</label> <input class="password" type="password" name="password" value="<?php echo $password ?>" id="password" tabindex="4" required /> </div> <div> <label class="label" for="passwordConfirm">Confirm Password</label> <input class="password" type="password" name="passwordConfirm" id="passwordConfirm" tabindex="5" required /> </div> <div> <input class="showbox" type="checkbox" name="terms" id="terms" tabindex="6" onFocus="this.tabIndex=1;"onBlur="this.tabIndex=6;"required /> <label for="terms">I agree to the <a href="/terms.php">Terms</a></label> </div> </fieldset> <fieldset> <div> <input name="submit" type="submit" value="Update" /> </div> </fieldset> </form> 函数中设置contentType: "application/json"

这样的事情:

$.ajax({})