Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax不通过POST_Javascript_Php_Ajax_Post - Fatal编程技术网

Javascript Ajax不通过POST

Javascript Ajax不通过POST,javascript,php,ajax,post,Javascript,Php,Ajax,Post,我有一个表单,需要将数据发布到compute.php文件中。 我必须传递两个select字段的内容,分别名为select_1和select_2。 我的fire按钮有一个onclick='go()'调用 我的脚本代码如下: function go() { var sel_1 = document.getElementById('select_1').value; var sel_2 = document.getElementById('select_2').value; $.ajax({

我有一个表单,需要将数据发布到compute.php文件中。 我必须传递两个select字段的内容,分别名为select_1和select_2。 我的fire按钮有一个onclick='go()'调用

我的脚本代码如下:

function go() {
var sel_1 = document.getElementById('select_1').value;
var sel_2 = document.getElementById('select_2').value;
$.ajax({
    type: "POST",
    url: "compute.php",
    data: "select_1=" + sel_1 + "&select_2=" + sel_2,
    dataType: "text",
    success: function(data,status)
      /* ------------ for debug I have an alert with a response ---- */
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      },
    error: function(data,status)
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      }
    });
}
$selection_1 = $_POST["select_1"];
$selection_2 = $_POST["select_2"];

$sqladd = "INSERT INTO table SET column_1 = '$selection_1', column_2 = '$selection_2';";
if (mysqli_query($conn, $sqladd)) {
   $resultadd= mysqli_query($conn, $sqladd);
   // ------- then for debug purpose
   echo "inserted row with col_1 --->" . $selection_1 . "<--- and col_2 --->" . $selection_2;
} else {
   // ------- either, still for debug purpose
   echo "not inserted. ";
   echo "Error: " . mysqli_error($conn);
}
在php端,我的compute.php文件包含如下代码:

function go() {
var sel_1 = document.getElementById('select_1').value;
var sel_2 = document.getElementById('select_2').value;
$.ajax({
    type: "POST",
    url: "compute.php",
    data: "select_1=" + sel_1 + "&select_2=" + sel_2,
    dataType: "text",
    success: function(data,status)
      /* ------------ for debug I have an alert with a response ---- */
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      },
    error: function(data,status)
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      }
    });
}
$selection_1 = $_POST["select_1"];
$selection_2 = $_POST["select_2"];

$sqladd = "INSERT INTO table SET column_1 = '$selection_1', column_2 = '$selection_2';";
if (mysqli_query($conn, $sqladd)) {
   $resultadd= mysqli_query($conn, $sqladd);
   // ------- then for debug purpose
   echo "inserted row with col_1 --->" . $selection_1 . "<--- and col_2 --->" . $selection_2;
} else {
   // ------- either, still for debug purpose
   echo "not inserted. ";
   echo "Error: " . mysqli_error($conn);
}

他们能挡住柱子吗?如果是,如何在不阻塞POST的情况下获得相同的结果?我需要从外部将/dir/foo.php重定向到/dir/foo,从内部将/dir/foo重定向到/dir/foo.php。

尝试修改go函数,如下所示:

function go() {
var sel_1 = document.getElementById('select_1').value;
var sel_2 = document.getElementById('select_2').value;
$.ajax({
    method: "post",
    url: "compute.php", 
    data: {"select_1":sel_1 , "select_2":sel_2},
    success: function(data,status)
      /* ------------ for debug I have an alert with a response ---- */
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      },
    error: function(data,status)
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      }
    });
}

尝试将go函数修改为如下所示:

function go() {
var sel_1 = document.getElementById('select_1').value;
var sel_2 = document.getElementById('select_2').value;
$.ajax({
    method: "post",
    url: "compute.php", 
    data: {"select_1":sel_1 , "select_2":sel_2},
    success: function(data,status)
      /* ------------ for debug I have an alert with a response ---- */
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      },
    error: function(data,status)
      {
        alert("passed data are: " + data + "\nStatus: " + status);
      }
    });
}

在go函数的ajax中修改数据对象
数据:{“选择1”:选择1,“选择2”:选择2}

在go函数的ajax中修改您的数据对象
数据:{“选择1”:选择1,“选择2”:选择2}

您的选择框必须那样锁定

<select id="select_1">
<option></option></select>
</select>

我认为您选择的框名为select_1和select_2,但您必须设置id而不是名称


p、 s如果您使用id,请粘贴html代码。

您的选择框必须那样锁定

<select id="select_1">
<option></option></select>
</select>

我认为您选择的框名为select_1和select_2,但您必须设置id而不是名称




p、 s如果您使用id,请粘贴您的html代码。

POST被上述.htaccess指令阻止。已更改,现在POST可以从html开始工作,但在将数据发布到compute时使js/ajax/jquery工作仍然存在问题。php

POST被.htaccess指令阻止,如上所述。已更改,现在POST可以从html开始工作,但在将数据发布到compute.php时,让js/ajax/jquery工作仍然存在问题。我建议不要将参数嵌入SQL,而是使用准备好的语句,使用?让mysql为您插入参数,看看这是以后要做的细化工作之一,但问题是php不会从ajax接收这些post数据。您是否尝试过使用post方法在页面中创建HTML表单元素并尝试过以这种方式提交?现在根据您的请求在HTML中尝试。Hmmmm…,结果相同,数据未通过。但也要用js检查,表单是有效的,并且源页面中的变量已填充。糟糕的谜题:(在你的PHP中添加一些echo,这样你就可以验证它是否到达服务器了?我建议不要在SQL中嵌入你的参数,而是使用准备好的语句?并让mysql为你插入参数,看看这是以后要做的细化工作之一,但问题是PHP没有从服务器接收这些post数据。)jax.您是否尝试过使用post方法在页面中创建HTML表单元素并尝试过以这种方式提交?现在根据您的请求在HTML中尝试。Hmmmm…,相同的结果,数据未传递。但也使用js进行了检查,表单有效,并且源页面中的变量已填充。错误的谜题:(在PHP中添加一些echo,以便您可以验证它是否到达服务器?您是否检查了是否收到了POST?现在用代码检查:if(isset($_POST['select_1']){echo“received select_1.”;}否则{echo“NOT received select_1”;}和get NOT:(你是否以某种方式使用了重定向方法?你是否尝试实际提交html表单?是的,刚才也是一样的负面结果。我在哪里可以调查?你是否检查了你是否收到了帖子?现在检查代码:if(isset($_POST['select_1']){echo“received select_1.”}else{echo“NOT received select_1”}并且没有:(您是否以某种方式使用了重定向方法?您是否尝试实际提交html表单?是的,刚才的结果是否定的。我可以在哪里进行调查?只是尝试了您的建议。相同的结果,compute.php中没有出现POST值:(可能是任何与数据类型相关的内容?或其他内容?请在您的答案中添加一些解释,以便其他人可以从中学习。刚刚尝试了您的建议。相同的结果,compute.php没有任何POST值:(可能是与数据类型相关的内容?或其他内容?请在您的答案中添加一些解释,以便其他人可以从中学习
echo“”
为了实现跨版本兼容性,我总是同时设置id和名称。我检查了您的代码,似乎没有问题。您能尝试提交一个简单的表单(仅html和php)吗并转储结果?现在根据您的请求在HTML中尝试。相同的结果,数据不会传递。但也使用js进行检查,并且表单是有效的,并且源页面中的变量已被填充。正如已经检查过的,从phi.ini中:
;enable_post_data_reading=Off
,正如您看到的,这一行被注释掉了,因此显然$\u post是可能的。并且
post\u max\size=8M
还尝试在compute.php顶部添加:
if(空($\u SERVER['CONTENT\u TYPE']){$\u SERVER['CONTENT\u TYPE']=“application/x-www-form-urlencoded”;
。但没有任何更改
echo“”
为了实现跨版本兼容性,我总是同时设置id和名称。我检查了您的代码,似乎没有问题。您能尝试提交一个简单的表单(仅html和php)吗并转储结果?现在根据您的请求在HTML中尝试。相同的结果,数据不会传递。但也使用js进行检查,并且表单是有效的,并且源页面中的变量已被填充。正如已经检查过的,从phi.ini中:
;enable_post_data_reading=Off
,正如您看到的,这一行被注释掉了,因此显然$\u post是可能的。并且
post\u max\size=8M
还尝试在compute.php顶部添加:
if(空($\u SERVER['CONTENT\u TYPE']){$\u SERVER['CONTENT\u TYPE']=“application/x-www-form-urlencoded”;
。但没有任何更改