我根据Cimbali的建议更新了这个问题。现在这是指定请求的js代码:
......
function editFiltName($thisFiltCell) {
var cellText=$thisFiltCell.text();
var idx=$thisFiltCell.index(); //alert("idx: idx");
var newFN=prompt("Enter new filter name below - up to 12 characters.", cellText);
switch (newFN) {
case null : return; // cancel key hit
case cellText : return; // no change
case "" : ; //$thisFCell.text('Filter' + (idx+1));
default : $thisFiltCell.text(newFN);
}
var action='updateFiltName';
var request = MrAjax(action,newFN,idx);
} // end main function
//*******************************************
function MrAjax(action,P1,P2) {
console.log("Ajax-> action: "+action+" P1: "+P1+" P2: "+P2);
var jqxhr=$.ajax({
type: "POST",
url: "../phpMain/editTblField.php",
data: {action:action, P1:P1, P2:P2}
});
jqxhr.always(function() { console.log("jqxhr.status: " + jqxhr.status ); });
} // end MrAjax
当我输入一些数据时,这是控制台输出:
有什么建议吗?请注意,控制台错误之后会立即取得成功'对同一文件的响应。但是php文件仍然无法运行。我从服务器得到没有php错误响应 - 我也没有看到我的嵌入式回声放在php文件echo("Got here!);
的第一行。即使我注释掉除了那条线之外的所有东西,这都是真的。
我不认为它是在PHP代码中,但为了以防万一,这里是:
<?php
echo "Got here!";
?>
再次感谢您的回顾。
答案 0 :(得分:0)
您的错误来自控制台日志中的拼写错误,您混合了来自不同语言的拼接。
而不是console.log("jqxhr.status: " . jqxhr.status );
,而不是console.log("jqxhr.status: " + jqxhr.status );
第二个错误似乎是status
字段不存在(来自您的评论)。但是,从jquery doc http://api.jquery.com/jQuery.ajax/#jqXHR:
jQuery 1.5中$ .ajax()返回的jQuery XMLHttpRequest(jqXHR)对象是浏览器的原生XMLHttpRequest对象的超集。例如,它包含responseText和responseXML属性,以及getResponseHeader()方法。当传输机制不是XMLHttpRequest(例如,JSONP请求的脚本标记)时,jqXHR对象尽可能模拟本机XHR功能。
[...]
为了向后兼容XMLHttpRequest,jqXHR对象将公开以下属性和方法:
readyState status statusText responseXML and/or responseText when the underlying request responded with xml and/or text, respectively setRequestHeader(name, value) which departs from the standard by replacing the old value with the new one rather than concatenating the new value to the old one getAllResponseHeaders() getResponseHeader() statusCode() abort()
我也准备好它是一个Deferred对象,所以这个奇怪的行为可能来自尝试在它存在之前访问状态字段。尝试等待请求的完成。
因此,请使用以下内容代替console.log("jqxhr.status: " + jqxhr.status );
:
jqxhr.always(function() { console.log("jqxhr.status: " + jqxhr.status ); });
或
jqxhr.always(function(data, textStatus, errorThrown) { console.log("jqxhr.status=" + jqxhr.status + " : " + textStatus ); });