【问题标题】:Passing Values of Spans to php with AJAX [duplicate]使用 AJAX 将 Span 的值传递给 php [重复]
【发布时间】:2013-06-23 08:36:11
【问题描述】:

感谢您抽出宝贵时间。我正在将视觉购物车构建到视差网站的多个页面中。因为视差的每个“页面”都会强制打开和关闭一个表格,所以我不能使用连续的表格。为了解决这个问题,我使用 jquery 将前面页面上的选择值放在一个页面中,填充跨度。

我希望能够使用 ajax 从 dom 中获取这些最终选择,将它们放入处理页面以存储客户选择信息,并根据 dwolla 事务检查它。我还没有设置 dwolla 事务和检查,因为我无法将我的数据获取到 php 处理页面,并让它返回一个可回显的值。顺便说一下,这是建立在 wordpress 之上的,而且很多时候,过滤器 wordpress 正在实施把我搞砸了。

这里是网站; http://ecigjuiceclub.com

让我们跳入代码!

AJAX:

function post()
{
    var name = $('#cname').val();
    var street1 = $('#cstreet').val();
    var street2 = $('#cstreet2').val();
    var city = $('#ccity').val();
    var state = $('#cstate').val();
    var zip = $('#czip').val();
    var email = $('#cemail').val();
    var phone = $('#cphone').val();
    var flavor = $('#cflavor').val();
    var strength = $('#cstrength').val();
    var refcode = $('#crefcode').val();
    $.post('process.php',{postname:cname,poststreet1:cstreet,poststreet2:cstreet2,postcity:ccity,poststate:cstate,postzip:czip,postemail:cemail,postphone:cphone,postflavor:cflavor,poststrength:cstrength,postref:crefcode},
    function(data)
    {
        $('#thankyou').html(data);
    });
}

php 进程.php

<?php
$name = $_POST['postname'];
$street1 = $_POST['poststreet1'];
$street2 = $_POST['poststreet2'];
$city = $_POST['postcity'];
$state = $_POST['poststate'];
$zip = $_POST['postzip'];
$email = $_POST['postemail'];
$phone = $_POST['postphone'];
$flavor = $_POST['postflavor'];
$strength = $_POST['poststrength'];
$refcode = $_POST['postref'];

if($zip == 90804)
{
    echo "1";
}
else
{
  echo "0";
}
?>

HTML 片段(我试图在 DOM 中抓取的位置):

<span style="color:#EF5D3D;">Email:  </span><span style="font-size:28px;" id="cemail"></span>
<span style="color:#EF5D3D;">Phone:  </span><span style="font-size:28px;" id="cphone"></span>

【问题讨论】:

  • 您只能对表单控件元素使用.val 方法。如果要获取任意元素的文本内容,请使用.text
  • 我也尝试过使用 .text,但我仍然没有收到对页面的响应,并且调试器看起来像是将“点击”插入到恢复的字段中。也许我只是没有钻进去? TypeError: Value does not implement interface HTMLElement.

标签: php jquery ajax dom dwolla


【解决方案1】:

我认为您最好尝试使用 innerHTML 而不是值,我不知道 jquery 中的确切语法。 iprefer u 使用 input 或代替 span

【讨论】:

    【解决方案2】:
    var email = $('#cemail').text();
    var phone = $('#cphone').text();
    

    这些应该是 post() 函数的替换。在 post() 函数的开头添加一条警告消息(例如)可以帮助您在它们被传递到 Ajax 请求之前检查它们的值。

    alert($('#cemail').text() + ' ' $('#cphone').text());
    

    还要确保清除缓存以确保您的 javascript 编辑已实施。

    【讨论】:

    • 很好地尝试推出警报,我已经开始 post() 并进行了警报检查,效果很好。
    • 我需要更多的代表来支持你,我至少看到它现在使用警报正确地进入了 ajax。
    • 可能是我自己的错。 请为 bonbon.langes 投票,应该一直保持警报。这就是我构建 ajax 数组的方式,我试图发布 div ID 名称,而不是我正在创建的新 JSON 变量名称。重新格式化脚本有助于我更清楚地看到这一点。表单现在根据邮政编码定义正确返回 1/0 切换,所以我们准备好了!我还没有找到获取跨度值的解释,但是使用 .text 来获取跨度是答案,再次是 bonbon.langes
    【解决方案3】:

    控制台显示以下错误,这些错误可能会也可能不会阻止其他脚本运行:

    未捕获的 ReferenceError:未定义 Modernizr ecigjuiceclub.com/:825

    阻止来源为“https://www.youtube.com”的框架访问 原点为“http://ecigjuiceclub.com”的框架。请求的帧 访问有一个“https”协议,被访问的帧有一个 “http”协议。协议必须匹配。

    【讨论】:

    • 太棒了,很好,我没想过先清除它,我正在使用他们的 js 进行自动播放,我已经清除了错误,但仍然出现另一个 HTMLELement 错误提交。谢谢你真棒!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2018-02-06
    • 1970-01-01
    相关资源
    最近更新 更多