【问题标题】:Ajax dynamic variable without refreshAjax动态变量不刷新
【发布时间】:2013-07-05 16:38:33
【问题描述】:

好的,所以我正在尝试在 php / ajax 中构建一个战斗脚本。目前,我有一个带有用户移动的 html 表单和一个文本框(用于测试),我正在使用 ajax 将移动发送到一个解析文件,然后回显出他们选择的移动。 我遇到的问题是我知道如何制作它,所以当用户提交表单时,存储健康的变量会下降,但我不知道如何在第一页上显示它。所以我有第1页显示健康状况,用户选择攻击然后提交ajax会将移动发送到第2页并使健康状况下降,但我不知道如何使第1页的健康状况下降令人耳目一新?即使我让它在用户提交时下降,我也不知道如何让它动态显示。 我希望我已经尽力解释了。

这是我到目前为止编写的代码。

我的 ajax

<script language="JavaScript" type="text/javascript">
function ajax_post(){
    // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var url = "my_parse_file.php";
    var sF = document.getElementById("selectionField").value;
    var ln = document.getElementById("last_name").value;
    var vars = "selectionField="+sF+"&lastname="+ln;
    hr.open("POST", url, true);


    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    // Access the onreadystatechange event for the XMLHttpRequest object
    hr.onreadystatechange = function() {
   if(hr.readyState == 4 && hr.status == 200) {
   var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
   }
    }
    // Send the data to PHP now... and wait for response to update the status div
    hr.send(vars); // Actually execute the request
    document.getElementById("status").innerHTML = "processing...";
}



</script>
 <script type="text/javascript">
var x = <?php echo $phpx; ?>;
 var div = document.createElement("DIV");
 div.appendChild(document.createTextNode(x));
 document.body.appendChild(div);
 </script>

然后是div和html表单

 <select size="3" name="selectionField" id="selectionField" multiple="no" > 
    <option value="move1" >California -- CA </option>
    <option value="move2" >Colorado -- CO</option>
    <option value="move3" >Connecticut -- CN</option>
  </select>
  <br />
  <br />
  Your Last Name: 
  <input id="last_name" name="last_name" type="text" />
  <br />
  <br />
  <input name="myBtn" type="submit" value="Submit Data" onClick="javascript:ajax_post();">
  <br />
  <br />
</p>

</p>

<div id="status"></div>

因此,如果我在第 1 页的 php 中正常显示健康状况,则用户选择一个 atatck,然后将其动态发送到第 2 页第 2 页使 hp 下降/php 会话下降。但是因为我会在第一页的 php 中回显变量,所以它不会动态改变。所以我猜我必须将变量存储在侧 ajax 中?

这里的编辑是你们所经历的一个例子。

       <script type="text/javascript">
    $.ajax({
      url: 'my_parse_file.php',
      type: 'POST',
      data: '{id: $('#nick').val() }'
      success: function(data){
       $('#hp').html(data);
      }
      }
    });
     </script>

<div id="hp"><?php echo $nick ; ?></div>

这是我添加到第一页的代码 然后在 my_parse_file.php 我有 $nick = '1'; 但它没有显示任何东西......

【问题讨论】:

    标签: php javascript jquery


    【解决方案1】:

    你可以做类似这样的事情: Jquery checking success of ajax post

    那你就不需要提交了,直接用纯jquery更新当前页面即可。

    编辑

    <script language="JavaScript" type="text/javascript">
        $(function() {
            $('#buttonAttack').click(function (){
            $.ajax({
                    url: 'my_parse_file.php',
                    type: 'POST',
                    data: {id: $('#nick').val() }
                    success: function(data){
                        $('#hp').html(data);
                    }
                 });
        });
        });
    </script>
    <div id="hp"></div>
    <input id='buttonAttack' type='button' value='Attack!' />
    

    【讨论】:

    • 我能问一下您所说的“仅通过纯 jquery 更新当前页面”是什么意思吗?我猜您的意思是将变量存储在 jquery 中,然后将它们打印在页面上??
    • 您将发布到服务器并在成功功能中更新您的例如输入,div,标签,选择元素。就像在 azngunit81 的回答中一样。
    • 我已经编辑了我的帖子以包含你们所经历的编码只是想确保我做对了吗?
    • 好吧,您可以使用脚本将其放入函数中,然后在调用所述函数的按钮上执行单击事件。对不起,我的浏览器正在运行,所以我还不能做代码示例:)
    • 这就是我想说的我有上面的主脚本,当我单击提交按钮时将编辑 hp 变量,但我不知道如何在我的第一页上编辑它。我不想要它,所以用户必须单击提交按钮才能查看 hp 我需要 ti 显示在页面上...
    【解决方案2】:

    第 1 步)将您的脚本切换到 jquery ajax(建议理智)

    这反过来会导致

    $.ajax({
      url: 'your_php_page.php',
      type: 'POST',
      data: '{id: $('#last_name').val() }'
      success: function(data){
       $('#status').html(data);
      }
      }
    });
    

    URL: 是你的 php 的链接 数据:是php会看到的所有变量$_POST

    your_php_page.php 在哪里进行获取/模型并回显结果。 完成后,“数据”是返回的回声,您将用您想要的任何 html 替换 #status id。

    编辑: 要回答您添加的代码 - 您将 php 和 javascript 混合在一起是错误的

    与 $('#hp').html(数据) 您已经回显了从 php 文件接收到的数据。 这就是为什么javascript是客户端而php是服务器端的原因。

    【讨论】:

    • 您的代码在行类型上存在错误:'POST',它说。
    • 你能看看我编辑的代码,看看我认为你的意思的例子吗?当我单击提交按钮时,我只需要一个 div 来回显我在 your_php_page.php 上设置的变量...
    • 取出 你应该没问题,正如我提到的 html(data) 负责用数据替换那个 div ......现在如果那不起作用,那么你的代码中可能有其他地方不起作用......不要忘记链接jquery 库。
    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 2016-04-05
    • 2011-08-23
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2018-05-12
    相关资源
    最近更新 更多