这是我的第一篇文章,所以如果我留下一些东西或者不能很好地解释自己,我会道歉。所有这些代码都在同一个php文件中
我的ajax电话
$.ajax(
{
type: "POST",
url: window.location.href,
data: {func: 'genString'},
datatype: 'json'
})
.done(function ( response )
{
console.log( response );
console.log( repose.string );
});
属于页面上的if语句
if ( isset ($_POST['func'] && $_POST['func'] == 'genString')
{
exit(json_encode(myFunction()));
}
该功能在页面上运行
function myFunction()
{
/* Would generate a string based on the database */
$arr = array('rows' => 1, 'string' => 'My test string');
// Changes values in the array depending on the database
return $arr;
}
运行此函数以在加载页面本身时生成数组并使用字符串部分显示它,并使用行部分设置浏览器中文本区域的高度但是当调用ajax时
console.log(respose)
此日志
{"rows":1,"string":"My test string"}
代替对象
然而,当我尝试记录或使用字符串时
console.log( response.string );
它显示为未定义
我以前做过这个并且已经工作并返回了一个对象,我可以在response.string
的js中使用它。我试图使用JSON_FORCE_OBJECT这对结果没有影响
答案 0 :(得分:2)
现在,响应只是被视为字符串(数据类型)。这就是response.string
无效的原因。
您可以通过添加以下内容来说明:
console.log( typeof response );
所以不要忘了把:
header('Content-Type: application/json');
在你if
区内:
您在if
区块(isset和response
)上输入了拼写错误:
if ( isset ($_POST['func']) && $_POST['func'] === 'genString' ) {
header('Content-Type: application/json');
exit(json_encode(myFunction()));
}
关于JS拼写错误:
console.log( response.string );
^^
答案 1 :(得分:0)
嗯,这是一个语法错误。 请求选项
datatype: 'json'
应该是
dataType: 'json'