在验证URL查询时使用ajax和php发布

时间:2016-10-14 08:45:04

标签: php jquery ajax post get

我试图通过ajax发布变量并通过php获取。我正在

  

未定义的索引:source1

     

未定义的索引:source2

在我的PHP中回显变量,任何人都知道我的代码是什么?

HTML

    <head>
    <script src="./script.js"></script>
    <script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
</head>

<body>

<form action="get.php?&uniId=3" method='post' name='sendform' onSubmit='send_value()'>
    <input type='submit' value='Test1'>
</form>

</body>

的Ajax

function send_value() {
    $.ajax({
        type: 'post',
        url: 'get.php',
        data: {
            source1: "some text",
            source2: "some text 2"
        },
        success: function (data) {
            console.log(data);
        }
    })
}

PHP

 <?php

if (!empty($_GET{"uniId"})) {

    if ($_GET{"uniId"} == 3) {
        echo 'your logged in as '; echo $_GET['uniId'];

        $src1 = $_POST['source1'];
        $src2 = $_POST['source2'];

        echo $src1;
        echo $src2;

var_dump($_REQUEST);

    } else {
        echo 'no! no! no!';
    }
} else {
    echo "Im sorry your on the wrong page ";
}

2 个答案:

答案 0 :(得分:1)

您可以将数据作为变量的串联传递给JavaScript函数。

  

在AJAX脚本的数据中传递多个变量。

这是传递数据的方法之一。

function send_value() {
    var value1 = "Post One";
    var value2 = "Post Two";
    $.ajax({
        type: 'post',
        url: 'get.php',
        data: "&data1"+value1+"&data2"+value2,
        success: function (data) {
            console.log(data);
        }
    });
}

在PHP中,如果你使用unID获得var_dump() perfecth,你需要检查这样的数据。

PHP代码:

  

错误:您需要使用此大括号$_REQUEST[]的helpf访问$_GET[][],但您使用的是{}完全是一个大错。

因此您需要替换以下代码:

替换:

if ($_GET{"uniId"} == 3) {}

。通过

 if ($_POST["uniId"] == 3) {}

您的整个代码如下所示。

<?php
if (!empty($_POST["uniId"])) {
if ($_POST["uniId"] == 3) {
   // Data Process Here
}
}
?>
  

get.php文件整体上都是这样的:

<?php
if (!empty($_POST["uniId"])) { // Your brace look wrong in this line
    if ($_POST["uniId"] == 3) { // Your brace look wrong in this line
        echo 'your logged in as '; echo $_GET['uniId'];
        $src1 = $_POST['data1']; // This should be the variable what we have used for seding purpose.
        $src2 = $_POST['data2'];
        echo $src1;
        echo $src2;
var_dump($_REQUEST);
    } else {
        echo 'no! no! no!';
    }
} else {
    echo "Im sorry your on the wrong page ";
}

答案 1 :(得分:0)

你在这做两件事。

您的表单会被提交并在提交后调用send_value()回调。但由于此功能不会返回false,因此表单的原始提交将发生,并且仅提交参数uniId=3。那就是你没有设置$_POST['data1']$_POST['data2']

要使表单由AJAX提交,您必须将HTML表单标记更改为

onSubmit='return send_value()'

在AJAX调用之后

return false

现在您只进行AJAX调用,并且不会设置参数uniId。你必须将它包含在AJAX调用中。

function send_value() {
    $.ajax({
        type: 'post',
        url: 'get.php',
        data: {
            source1: "some text",
            source2: "some text 2",
            uniId: 3
        },
        success: function (data) {
            console.log(data);
        }
    });
    return false;
}

现在在PHP中将$_GET{"uniId"}更改为$ _POST [“uniId”],它应该可以正常工作。