如何通过返回空数据字符串来解决Ajax“POST”方法?

时间:2017-03-23 06:21:55

标签: php jquery ajax mysqli

我在StackOverflow上发布相当新,所以我希望我的帖子遵循正确的标准,如果我不道歉的话。我会尽量保持对问题的解释和解释。

我正在尝试创建一个输入字段,允许用户更新其个人资料中的“关于”部分,以便其他用户能够看到。我看过类似的帖子,但没有一个真的有解决方案可以解决我能找到的问题。

我正在使用一个带有POST方法的表单,该表单有一个隐藏字段,其中包含userId的值并存储输入字段中的字符串。我正在使用与id = "post"按钮关联的Onclick函数调用Ajax请求,该请求将输入值存储到称为var text的变量中,然后我将其存储到数据库中userId和评论。但是,控制台返回“空字符串”(图像链接在最底部)。我不知道如何解决这个问题,因为我仍然非常习惯使用Ajax,而且我正在努力学习。

myAccount.php

<h2>About</h2>      
<form method='POST' id="postForm">
<input type='hidden' name='posterId' value="<?php echo $user['userId']?>">
<input name="post" id='post' value="">
<br/>
<br/>
<button type="button" onclick='setComment()' name='submit'>Post it</button>
</form> 

main.js

function setComment() {
    var text = $("#post").val();
    $.ajax({
        type: 'POST', 
        url: 'setAbout.php',
        data: {'text': text},
        success: function(data) {
            console.log(data);
        }
    });
}

Return "an empty string"

注意:如果您发布解决方案,请提供解释,说明为什么您采取这种特定方法,因为我在这里学习。谢谢!

2 个答案:

答案 0 :(得分:0)

您使用AJAX发布:{text}变量,但在PHP代码中,您希望获得{posterId}变量。为什么?更改您的变量名称,并确保在JS和PHP代码中使用相同的名称变量。而在AJAX请求中,PHP无法返回任何内容。所以在PHP代码中,你应该使用'echo'来返回。

答案 1 :(得分:0)

<input type='hidden' name='posterId' value="<?php echo $user['userId']?>" id = 'posterId'>

function setComment() {
    var text = $("#post").val();
    var posterId=$('#posterId').val();
    $.ajax({
    type: 'POST', 
    url: 'setAbout.php',
    data: {'text': text, 'posterId':posterId},
    success: function(data){
        console.log(data);
    }
});
}

您正在检查PHP脚本中的变量posterId,这是您在执行ajax调用时未设置的。

并且在脚本中您只是运行准备好的查询,您没有返回任何内容作为对您的请求的响应。因此,即使请求成功,您也不会在响应中获得要在控制台中打印的任何内容