我似乎无法从这个回调中工作,但它得到一个简单的测试响应。任何人都知道为什么它会像我想要的那样做
<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使它尽可能短
答案 0 :(得分:1)
在此处尝试的是将$.post
更改为$.ajax
,以便您可以指定错误回调。无论如何,$.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'
中添加了请求。
答案 1 :(得分:0)
这似乎是由于同源政策和MDN documentation
端口号由浏览器单独保存。对setter的任何调用,包括document.domain = document.domain都会导致端口号被null覆盖。因此,只能在第一个中设置document.domain =“company.com”,无法使company.com:8080与company.com交谈。必须在两者中设置它以使端口号都为空。
因此,正如您在回复中所说,这就是您获得null的原因
尝试添加datatype:"jsonp"
。它应该像这样工作。
$(document).ready(function(e) { $("button").click(function() { var msg = $("#txt").val(); $.post( "http://localhost/bot.php", {msg: msg}, function(data,status) { $("p").text(data); }, dataType:"jsonp" ); }); });
进一步阅读here。
希望有所帮助。