我似乎无法从中得到回调,但它得到了响应,这是一个简单的测试。 任何人都知道为什么它不能按照我的意愿去做
<script type="text/javascript">
$(document).ready(function(e) {
$("button").click(function() {
var msg = $("#txt").val();
$.post(
"http://localhost/bot.php",
{msg: msg},
function(data,status) {
$("p").text(data);
}
);
});
});
</script>
PHP,谁能建议一个好的JavaScript工具来帮助我发现错误?
<?php
class ai
{
private $msg;
public function __construct($msg)
{
$this->msg = $msg;
}
public function respond()
{
switch($this->msg)
{
case "hi":
echo "Hello Mr Brown How are You";
break;
case "fine":
echo "Good to hear Did you know Zanda hard Coded me?";
break;
case "im fine":
echo "Good to hear Did you know Zanda hard Coded me?";
break;
default:
echo "??????????????????????????????" .
"That means i was extra rush prototype.......i cant answer that";
}
}
}
$talk = new ai($_POST['msg']);
$talk->respond();
?>
<div class="box">
<p>text</p>
<textarea id="txt"></textarea>
<button>click</button>
</div>
有HTML使它尽可能短
这里
也可以尝试更改$.ajax
的$.post
,以便您可以指定错误回调。 无论如何,$.get
、$.post
等都只是$.ajax
的简写。尝试这样的事情:
("button").click(function() {
var msg = $("#txt").val();
$.ajax(
url: "http://localhost/bot.php",
data: {msg: msg},
dataType: 'jsonp',
success: function(data,status) {
console.log(data, "returned with status:", status);
},
error: function(obj, status, error){
console.log("Error!", obj, status, error);
}
);
});
仅仅因为您得到200
响应并不意味着一切正常。所有这一切都在说 POST 是成功的。您需要检查响应文本以查看是否返回了任何错误。
编辑:dataType: 'jsonp'
添加到请求中。
这似乎是由于同源策略和 MDN 文档
端口号由浏览器单独保存。对资源库的任何调用(包括 document.domain = document.domain(都会导致端口号被 null 覆盖。因此,不能通过仅在第一个中设置 document.domain = "company.com" 来 company.com:8080 与 company.com 交谈。必须在两者中设置它,以便端口号均为空。
所以这就是你在回复中所说的空
的原因尝试添加datatype:"jsonp"
。它应该像这样工作。
$(document(.ready(function(e( { $("button"(.click(function(( { var msg = $("#txt"(.val((; $.post( "http://localhost/bot.php", {msg: msg}, 函数(数据,状态( { $("p"(.text(data(; }, 数据类型:"jsonp" ); });});
进一步阅读 这里.
希望有帮助。