【发布时间】:2015-11-16 22:46:32
【问题描述】:
我有一个大文件,但在调试问题时,我已将其缩小,以消除所有外部内容。基本上我已经得到了这个 .php 文件:
<?php
if (isset($_POST['val'])) {
header("Content-type: application/json; charset=utf-8");
echo json_encode(array("The first string", "first"));
}
?>
<script type="text/javascript" src="javascript/jquery.js"></script>
<script type="text/javascript">
$.ajax({
type: 'POST',
url: 'other',
data: {val: 'text'},
contentType: "application/json",
dataType: 'json',
success: function(result) {
console.log(result);
alert(result);
},
error: function(err) {
console.log(err);
alert('Error -> ' + err);
}
});
</script>
在原始代码中,我在不同的文件中有PHP和Javascript,所以请不要告诉我像这样<?php ?>将PHP继承到javascript中,
我刚刚研究了很多材料,很多人都这样建议。
在此脚本中,触发了错误函数。当我研究这个问题时,我发现它是在传递无效 json 时触发的。
这是我在警报框中得到的:Error -> [object Object],这是我在控制台中得到的:
uncaught exception: out of memory <unknown>
Object { readyState: 4, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 11 more… }
如果我将 dataType 更改为 html,并删除 contentType,我会执行成功函数。它通过了:
["The first string","first"]
<script type="text/javascript" src="javascript/jquery.js"></script>
<script type="text/javascript">
$.ajax({
type: 'POST',
以及页面的其余代码。
我需要收到一个 json。为什么这东西不起作用?为什么我收不到 json?
附: 您可能会注意到,我在网址末尾没有 .php ... 我有一个 .htaccess 文件,可以将其删除,所以这不是问题。我禁用它并将脚本与.php一起使用,但没有任何改变。 PHP 代码已执行,但我没有得到正确的回调...
【问题讨论】:
标签: javascript php jquery json ajax