我无法将jQuery代码中的变量传递给我的PHP代码

时间:2014-12-02 03:49:49

标签: javascript php jquery ajax post

我正在尝试使用AJAX和POST将jQuery代码中的变量传递给我的HTML / PHP代码,但是我收到错误消息“注意:未定义的索引:C:\ xampp \ htdocs \ teszt \ test1中的testData第9行的.php“。

我正在使用XAMPP,我在localhost中运行代码,我正在使用Mozilla Firefox,这是我的HTML / PHP代码(test1.php):

<!DOCTYPE html>
<html lang="hu">
    <head>
        <title>Test</title>
        <meta http-equiv="Content-type" content="text/html;charset=utf-8">
    </head>
    <body>

        <?php echo "<p class='testParagraph'>" . $_POST['testData'] . "</p>";?>

        <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
    </body>
</html>

这是我的jQuery代码(script1.js):

$(document).ready(function() {
   var temporaryVariable = "temporary variable";

   $.ajax({
        type: "POST",
        url: "test1.php",
        data: { testData:"2" },
        success: function (result) {
            alert('success');
        }
      }).done(function() {
        $('.testParagraph').addClass( temporaryVariable );
        });
});

到目前为止我尝试改变了什么(但当然没有奏效):

test1.php:

  1. charset之前是iso-8859-2
  2. 两个代码中的
  3. GET代替POST
  4. 评论script标记包含
  5. script1.js:

    1. 评论$(document).ready(function() {...
    2. data:我尝试将引号符号从'更改为"或根本没有引号符号
    3. 评论success: function...行及其下面的两行
    4. 此外,当我运行PHP代码时,p标记从jQuery代码中获取temporaryVariable类。

      仍然,我收到上面写的错误消息。我很感激我得到的任何帮助。

5 个答案:

答案 0 :(得分:0)

除非您从发布请求中获取php页面,否则使用$_POST['testData']将无用,并且始终会给出索引未找到错误。如果您想在jquery的p标记中设置值,可以使用$('.testParagraph').html( temporaryVariable )代替.addClass

答案 1 :(得分:0)

使用数据:&#39; testData = 2&#39;,

而不是数据:{testData:&#34; 2&#34;},

答案 2 :(得分:0)

  

注意:未定义的索引:C:\ xampp \ htdocs \ teszt \ test1.php中的testData   第9行

表示你的

    data: { testData:"2" },

错了。

没有测试,但这应该有效:

    data: [ testData:"2" ],

因为$ _POST是一个数组

答案 3 :(得分:0)

将test1.php更改为:

<!DOCTYPE html>
<html lang="hu">
    <head>
        <title>Test</title>
        <meta http-equiv="Content-type" content="text/html;charset=utf-8">
    </head>
    <body>

        <p id='testParagraph'>&nbsp;</p> <!-- You receive the value by jquery not from PHP. -->

        <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
    </body>
</html>

你的script1.js:

$(document).ready(function() {
   var temporaryVariable = "temporary variable";

   $.ajax({
        type: "POST",
        url: "test1.php",
        data: { testData:"2" },
        success: function (result) {
            alert('success');
        }
      }).done(function() {
        $('#testParagraph').html(temporaryVariable); //The value is inserted into the paragraph.
        });
});
希望对你有用。

答案 4 :(得分:0)

这听起来好像是在向自己发布test1.php,并且不清楚为什么要这样做。

正如@Rasclatt在评论中指出的那样,在您尝试访问之前检查数据是否存在。

变化:

<?php echo "<p class='testParagraph'>" . $_POST['testData'] . "</p>";?>

要:

<?php
if( isset( $_POST['testData'] ) ) {
    echo "<p class='testParagraph'>" . $_POST['testData'] . "</p>";
} 
?>

但是,如果test1.php完全是不同的脚本,则进行以下更改:

在HTML中包含ajax内容的占位符:

<p class="tetParagraph"></p>

修剪并编辑您的JavaScript以下内容:

$(document).ready(function() {
   var tempVal = "temporary variable";
   $.ajax({
        type: "POST",
        url: "test1.php",
        data: { testData:"2" },
        success: function (result) {
            tempVal = result;
            $('.testParagraph').html( tempVal );
            alert('success');
        }
   });
});