【问题标题】:jquery send data to php without ajaxjquery在没有ajax的情况下将数据发送到php
【发布时间】:2011-12-02 18:17:07
【问题描述】:

如果没有 ajaxy 的优点,我怎么能做到这一点?我需要调试一个麻烦的 php 脚本。没有一种形式,只有一张图片,点击后会执行以下操作。

$.post("php/navTabs.php", { action: "deleteTab", theHTM: thehtm }, function(jdata) {
    alert("The tab was " + jdata.is_deleted);
}, "json");

再次感谢, 托德

【问题讨论】:

  • 您可以使用 cURL 从命令行发布。

标签: php jquery post


【解决方案1】:

我会将 php/navTabs.php 中的 $_POST 变量更改为 $_GET 并像

一样直接访问脚本
php/navTabs.php?name=value&name2=value2 etc

这样你就没有 ajax 了。

【讨论】:

    【解决方案2】:

    此方法将允许您使用与$.post() 非常相似的流程,因为它对用户透明地发生并启用回调函数:

    <img />
    <iframe id="workFrame" style="display: none"></iframe>
    <form action="php/navTabs.php" target="workFrame" method="post" style="display: none">
    <input type=hidden id="hidden-1">
    <input type=hidden id="hidden-2">
    </form>
    
    <script>
    $('#hidden-1').val('some value to send to the server');
    $('#hidden-2').val('some OTHER value to send to the server');
    $('img').on('click', function () {
        $('form').trigger('submit');
    });
    </script>
    

    这使用了一个带有隐藏输入的表单(因此这对用户来说是透明的)。您可以使用 JavaScript 设置隐藏输入的值,然后以编程方式将表单提交到隐藏的 iframe。

    此方法的另一个特点是您可以绑定到 iframe 的 load 事件,并像在 $.post() 中一样具有回调函数:

    $('#workFrame').on('load', function () {
        var response = $(this).contents().filter('body');
        //if you output JSON in your PHP script you could parse this as JSON and do work
    });
    

    更新

    如果您只想查看 PHP 脚本的输出,那么您可以使用开发人员工具(FireBug 等)查看响应。您还可以在 AJAX 回调中记录响应:

    $.post("php/navTabs.php", { action: "deleteTab", theHTM: thehtm }, function(jdata) {
        alert("The tab was " + jdata.is_deleted);
        console.log(jdata);
    }, "json");
    

    如果您当前没有使用某些 Dev.带有控制台的工具,我强烈建议您检查FireBug,它将为您节省大量调试代码的时间。

    【讨论】:

      【解决方案3】:

      简短的回答:你不能使用 Javascript。

      长答案:

      如果您想避免使用 AJAX,您有两种选择:

      1) 使图像成为表单的一部分,并在单击按钮时提交隐藏的输入。

         <form method="form.php" action="post">
              <input type="hidden" name="action" value="delete"/>
              ...rest of form...
         </form>
      

      2) 使图像成为链接,并在 URL 上添加输入。喜欢:

         form.php?action=delete
      

      但不知道为什么要避免使用 AJAX。

      【讨论】:

      • 当然可以的话直接访问脚本。 PHP文件存在吗? AJAX 不会凭空解析内容。
      • 嗯,是的,但是如果不使用 AJAX,就不能使用 jQuery/Javascript 将数据发送到 PHP 文件。您可以将图像设置为链接并像您的回答所说的那样在 URL 中发送数据,或者您可以将其更改为表单,但就我而言,您不能在不使用 AJAX 的情况下通过 jQuery/Javascript 发送该数据我知道。
      • 最后我不想绕过 ajax,但我有一个 php 脚本运行不正确,我需要放一些 var_dumps 和 echos 来查看 WTF 是否正在进行。
      • 在这种情况下,如果您使用 Firebug,您可以查看其中的 AJAX 响应。结帐 Firebug 的页面,看看我在说什么。或者,您可以将 console.log(jdata) 放在该警报所在的位置,以查看来自 PHP 文件的响应。我们必须查看 PHP 文件才能为您提供更多有关问题所在的支持。
      • @maddogandnoriko 你可以用 JavaScript 做到这一点。您可以动态构建表单、动态填充并动态发送。你甚至可以创建一个回调函数(见我的回答)。
      【解决方案4】:

      让我们试试……

              var latitude = 51.509865 ;
              var longitude =  -0.118092;
      
              document.cookie = "latitude = " + latitude
             document.cookie = "longitude = " + longitude
      

      PHP 代码:-

           $lat_visitor  = $_COOKIE['latitude'];
      
          $long_visitor = $_COOKIE['longitude'];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-26
        • 2019-04-18
        • 2014-09-22
        • 2016-12-14
        • 2015-11-06
        • 2015-09-19
        • 1970-01-01
        • 2016-02-05
        相关资源
        最近更新 更多