我想通过(从ajax到php)从客户端向服务器发送/传递数据,但是当我尝试此代码时
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
y_encoded = le.fit_transform(y)
fit = rte.fit(X, y_encoded)
在我的浏览器中,我得到了 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
$.ajax({
type: 'post',
url: 'loo.php',
data: { data: 'some data' },
success: function(response,w) {
console.log(w);
}
});
</script>
<?php
echo $_POST['data'];
?>
的打印输出,这意味着javascript代码可以正常工作了,在php中,我得到了success
p.s我的文件名为Undefined index
,所有代码都在同一个文件中
编辑:我试图这样分隔文件:
我的loo.php文件:
loo.php
我的test.php文件:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
$.ajax({
type: 'post',
url: 'test.php',
data: {data: 'some data'},
success: function (response, w) {
console.log(w);
}
});
</script>
仍然有未定义的索引
p.s。运行loo.php文件后,我浏览手册至test.php文件
答案 0 :(得分:1)
您收到此错误,因为在加载页面时尚未发送POST请求。因此,仅在提交的data
存在时显示它,否则,显示JavaScript代码。
<?php
if (isset($_POST['data'])) {
die($_POST['data']);
}
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
$.ajax({
type: 'post',
url: 'loo.php',
data: {data: 'some data'},
success: function (response, w) {
console.log(w);
}
});
</script>
答案 1 :(得分:0)
尝试一下。
<?php
$data = json_decode(file_get_contents('php://input'), true);
echo $data['data'];
?>
答案 2 :(得分:0)
尝试一下
HTML文件
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="data_value"></div>
<script type="text/javascript">
$( document ).ready(function() {
$.ajax({
type: 'post',
url: 'loo.php',
data: { data: 'some data' },
success: function(response,w) {
$("#data_value").html(response);
}
});
});
PHP文件(loo.php)
<?php
print_r($_POST);
?>
答案 3 :(得分:0)
尝试以这种方式更改处理程序:
if(isset($_POST['data'])){
function return_data() {
die(json_encode($_POST['data'])));
}
return_data();
}
答案 4 :(得分:0)
在编辑问题后回答:
$ _ POST是HTTP Post请求发送的数组。因此,如果对名为test.php的页面的请求或非HTTP POST请求的请求,则$ _POST数组为空。但是如果您发送了$ _GET数组,它们可能会有一些数据。 除非您使用带有method =“ post”的表单,否则导航至页面是对该页面的获取请求。 所以您使用ajax调用所做的是正确的。但是在没有带post方法的表单的情况下手动导航到test.php不会填充$ _POST数组。 因为当您进行Ajax调用时,它就完成了,它只是正确地进行了后调用,并且一切正常,但是当您导航到该页面时,它是一个get请求,并且不会填充$ _POST数组。 为此,您根本不需要ajax。你可以有这个表格
<form method="POST" action="test.php">
<input type="text" name="data" value="some data" />
<input type="submit" value="submit" />
</form>
因此您可以使用ajax并处理要在ajax成功方法中处理的任何内容。或使用表格将请求发送到页面并在那里处理。
修改前问题的答案
如果它们在同一个文件中,将无法正常工作,因为在文件加载时,$ _ POST ['data']根本不存在,并且在运行ajax之后呼叫,它存在于该呼叫中,而不是在您的浏览器窗口中。
因此您可以检查$ _POST ['data']是否存在,以便通过ajax调用发送它,以便可以将其返回并在ajax成功函数中使用它。
结论:
您不能将它们放在同一文件中,并期望ajax在实际的php之前加载。 它将首先加载整个文件,然后将运行ajax 。 未定义的索引来自服务器,甚至没有看到HTML页面。
解决方案可能是:
带有html和ajax函数index.html的文件
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
$.ajax({
type: 'post',
url: 'loo.php',
data: { data: 'some data' },
success: function(response,w) {
// use the response here
console.log(w);
}
});
</script>
和另一个与您的逻辑loo.php
<?php
header("Content-Type: text/plain"); // if you want to return a plain text
// if you want to return json it could be header('Content-type: application/json');
echo isset($_POST['data'])? $_POST['data']: ''
?>