【发布时间】:2015-05-02 21:48:01
【问题描述】:
我最近开始将旧的Classic ASP 网站翻译成PHP。它的几个页面(Response.ContentType = "application/json") 只会提供JSON 响应,例如{"R":1},并且一切正常。
现在在 PHP 上,header("content-type:application/json") 首先在代码上,ajax 只是不会解析它。客户端 JS 代码与我之前使用的相同。我什至没有碰过它。
$.ajax({
dataType: "json",
type : "POST",
url: "processthisrequest.php",
cache: false,
async: false,
data: { Field1:"bla", Field2:"blabla"},
error: function(data){
// code on error
},
success: function(json){
// code on success
}
});
如果请求全部被接受,则它所提供的服务是 {"R":1},并像往常一样使用双引号。
无论如何,Ajax 都会触发错误函数。尝试调试它我发现了这个:
readyState:4
responseText:{"R":1}
status:200
statusText:OK
在寻求帮助时,我发现很多人在 ajax 获取 readyState:4、status:200 时遇到问题,并且响应仍未被解析。没有任何解决方案有效或适用于我的问题。
因为它与 IIS/ASP 一起使用,它可以与 Apache 或 PHP 一起使用吗?
更新:
仍然没有成功,但是如果我让服务器使用{"R":1} 提供 .js 文件,而不是通过 php 页面 ajax 处理响应,则会触发成功功能。这仅证明了我的观点,即这是一个 php 问题,并解释了为什么它与旧恐龙 ASP 一起使用。现在,为什么 PHP 没有提供正确的 mime 类型是我想要弄清楚的。
【问题讨论】:
-
如果在错误函数中添加
console.log(data);,控制台会得到什么? -
readyState:4, responseText:"{"R":1}", status:200, statusText:"OK" 和所有其他属性的函数。
-
尝试将
dataType参数改为text,看看是否调用成功。 -
我的意思是使用 fiddler 或浏览器的网络日志记录它,而不是
console.log -
@user3584460 我整理好了。发表了回应。
标签: php jquery ajax json asp-classic