我试图发送一个AJAX请求,想看看我发送了什么。 但不幸的是我无法做到这一点。 如果一切正常,我将在后面填写一个select选项元素。
<script type="text/javascript">
$(document).ready(function(){
$('select[name="domains"]').change(function(){
var requestStr = $(this).val();
// send Ajax request
$.ajax({
cache: 'false',
type: 'POST',
data: {select:requestStr},
url: 'myHandler.php',
dataType: 'json',
success: function(data){
var json = JSON.parse(data);
alert(json.response); // Here you get the value
if(data.status == 'success')
alert("Thank you for subscribing!");
else if(data.status == 'error')
alert("Error on query!");
var str = "<option value=''>Please Select</option>";
//$.each(data, function(i, items){
// str += "<option value='"+items.id+"'>"+items.name+"</options";
//});
$('select[name="countries"]').html( str );
},
// When an error occurs, the error function is called.
error:function(x,e){
if(x.status==0){
alert('You are offline!!\n Please Check Your Network.');
}else if(x.status==404){
alert('Requested URL not found.');
}else if(x.status==500){
alert('Internel Server Error.');
}else if(e=='parsererror'){
alert('Error.\nParsing JSON Request failed.');
}else if(e=='timeout'){
alert('Request Time out.');
}else {
alert('Unknow Error.\n'+x.responseText);
}
}
});
});
});
PHP处理程序看起来像这样:
<?php
require_once 'myClass.php';
if (isset($_POST['select']))
{
// log event
$filename = "log.txt";
$fd = fopen($filename, "a");
$str = "[" . date("Y/m/d h:i:s", mktime()) . "] " . $_POST['select'];
fwrite($fd, $str . "\n");
fclose($fd);
$handler = new myClass();
$dataAjax = $handler->getName($_POST['select']);
echo json_encode($dataAjax);
}
<?php
class myClass {
function getName($data)
{
return $data;
}
}
我以为我可以使用请求参数并返回它,但我看不到任何内容。 哦,我使用Internet Explorer,所以我不能使用Firebug。
修改 我添加了几行来记录我的请求。 但是日志文件是空的。
更新 现在有了一些进展:
我可以在请求文本“select = QD”中看到这一点。
但当我用echo json_encode($dataAjax);
回应它时
我收到了Error.Parsing JSON Request failed.
我不明白为什么'成功'功能不起作用! 响应是json编码的。
哦顺便问一下。是不是我不能在PHP中使用“return”将我的回复发送回AJAX?答案 0 :(得分:0)
您可以在服务器端打印出请求并将其登录到文件/ syslog / etc。
答案 1 :(得分:0)
如果您只想查看headers,post,response,html
,请尝试firebug
function IsJson(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
这将检查响应是否为json
答案 2 :(得分:0)
if (isset($_POST['countries']))
{
$handler = new myClass();
$dataAjax = $handler->getName($_POST['countries']);
echo json_encode($dataAjax);
}
------------------------------------------------------
dataType: 'json'