我使用Ajax来访问我的comment_insert.php。在我的comment_insert.php中,我想调用位于另一个php文件(comments_pasta.php
)中的公共静态函数。如果我调用该函数,我的程序会得到一个
“未捕获的SyntaxError:意外的令牌<”
如果我删除了通话,一切正常。我是ajax的新手。
function comment_post_btn_click(){
var _comment = $('#comment-post-text').val();
var _userId = $('#userId').val();
var _userName = $('#userName').val();
if(_comment.length > 0 && _userId != null){
console.log(_comment + " " + _userName + " " +_userId);
$.post("/ajax/comment_insert.php",
{
//we use this in the comment_insert.php(AJAX)
task : "comment_insert",
userId : _userId,
comment : _comment
}
).success(
function(data){
//going to turn the Json from comment_insert.php(AJAX)into a javascript object
comment_insert(jQuery.parseJSON(data));
console.log("Response text = " + data);
<?php
session_start();
if(isset($_POST['task']) && $_POST['task'] == 'comment_insert' ){
require_once $_SERVER['DOCUMENT_ROOT'] . 'defines.php';
$userId = (int)$_POST['userId'];
$comment = addslashes(str_replace ("\n" , "<br>" , $_POST['comment']));
$std = new stdClass();
$std -> userId = $userId;
$std -> comment = $comment;
$std -> userName = $_SESSION['userName'];
require_once ('comments_pasta.php');
Talk:hej();
echo json_encode($std);
}
?>
<?php
class Talk{
public static function hej(){
console.log("HEJ");
}
}
?>
答案 0 :(得分:0)
实际情况是,意外的语法错误实际上是因为PHP引发了错误,并且格式错误报告包含类似<p> There was an error! </p>
的内容,并且它在<
上中断,这也恰好使您的{JSON
失效1}}对脚本的响应。 console.log()
是一个javascript函数。你不能在PHP中执行它。
您实际应该做的是echo
或return
该变量并将其分配给您的对象。
public static function hej(){
return "HEJ":
}
然后在你的PHP脚本中。
$std -> userName = $_SESSION['userName'];
require_once ('comments_pasta.php');
$std->HEJ = Talk:hej();
现在,您可以在console.log(data.HEJ)
包装器的success
功能中执行$.post()
。
此外,您正在执行comment_insert(jQuery.parseJSON(data));
但是,您可以让jQuery通过添加$.post()
作为调用的最终参数来自动解析'json'
包装器中返回的数据,请注意:
$.post({ //object
}, 'json'); // <--final line closing $.post() wrapper
现在只是:
comment_insert(data);
这应解决它。
答案 1 :(得分:0)
试试这个ajax调用
function comment_post_btn_click()
{
var _comment = $('#comment-post-text').val();
var _userId = $('#userId').val();
var _userName = $('#userName').val();
var form_data = new FormData();
form_data.append('_comment',_comment);
form_data.append('_userId',_userId);
form_data.append('_userName',_userName);
$.ajax({
// url : 'userListAjax.php?r='+Math.random();,
url : 'userListAjax.php?r=',
dataType : 'text',
cache : false,
contentType : false,
processData : false,
data : form_data,
// data: {params:[page,display]},
type : 'post',
success : function(data){
// alert(data);
document.getElementById("dynamicContent").innerHTML=data;
}
});
}
答案 2 :(得分:0)
没有任何作用..从comment_insert(jQuery.parseJSON(data))获取输出;我只需要删除函数的调用。如果我做一个console.log(&#34;响应文本=&#34; +数据);在使用函数调用的comment_insert之前,我得到了这个:
回复文字=
(!)注意:使用未定义的常量控制台 - 假设&#39; console&#39;在 7 的C:\ wamp \ www \ ajax \ comments_pasta.php中
调用堆栈
#TimeMemoryFunctionLocation
10.0000247944 {main}().. \ comment_insert.php : 0
20.0120262616Talk :: hej().. \ comment_insert.php : 20
(!)警告:log()期望参数1为double,在 7 上的C:\ wamp \ www \ ajax \ comments_pasta.php中给出字符串
调用堆栈
#TimeMemoryFunctionLocation
10.0000247944 {main}().. \ comment_insert.php : 0
20.0120262616Talk :: hej().. \ comment_insert.php : 20
30.0210263032http://www.php.net/function.log'目标=&#39; _new&#39;&GT;日志
().. \ comments_pasta.php : 7
{&#34; userId&#34;:1,&#34;评论&#34;:&#34;测试评论文字&#34;,&#34; userName&#34;:&#34; alex&#34;} < / p>
如果我删除了函数调用,我在console.log中得到了我想要的东西:
asdasd Alexander Lundh 1 comment_insert.js:18 响应文字= {&#34; userId&#34;:1,&#34;评论&#34;:&#34; asdasd&#34;,&#34; userName&#34;:&#34; alex&#34; }