2010-05-09 67 views
1

当用户点击一个链接时,它使用jQuery Ajax来提交表单去贝宝。由于某种原因,它不工作。我感谢任何帮助。我无法使用jquery提交表单。它正在工作;/

的HTML链接:

<a href="#" onClick="javascript:go_paypal();">Paypal</a> 

的JS功能:

function go_paypal() { 

data = 'req_paypal=1'; 

$.blockUI({ message: '<h1> Going to Paypal...</h1>',css:{background:'#000'} }); 
    $.ajax({ 
     type: "POST", 
     url: "index.php", 
     data: data, 
     success: function(data) { $("#paypal_form").html(data); $("#payPalForm").submit(); } , 
     error: function() {$.unblockUI(); alert('Unable to communicate to server.'); } 
    }); 
    return false; 
} 

的PHP代码:

if(isset($_POST['req_paypal']) && $_POST['req_paypal'] == 1) { 


    $sql = 'INSERT INTO `transactions` (id,type,ip,time,ammount,status) VALUES (NULL,1,\''.$_SERVER['REMOTE_ADDR'].'\',\''.time().'\',\''.$global['paypal_prod_amount'].'\',0) '; 
    echo $sql; 
//  $sql2 = 'INSERT INTO `users` (id,email,password,referred_by,referrals) VALUES ('',)'; 

    mysql_query($sql); 

    $id = mysql_insert_id(); 

    $html = ' 
    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" id="payPalForm"> 
<input type="hidden" name="item_number" value="One Year of Imgur Pro"> 
<input type="hidden" name="cmd" value="_xclick"> 
<input type="hidden" name="no_note" value="1"> 
<input type="hidden" name="business" value="'.$global['paypal_email'].'"> 
<input type="hidden" name="custom" value="'.base64_encode($id).'"> 
<input type="hidden" name="currency_code" value="USD"> 
<input type="hidden" name="return" value="'.$global['paypal_return'].'"> 
<input name="item_name" type="hidden" id="item_name" value="One Year of Imgur Pro" > 
<input name="amount" type="hidden" id="amount" value="'.$global['paypal_prod_amount'].'" > 
</form> 
    '; 

    echo $html;exit; 
} 
+3

请尝试从开发者的角度来阐述更多,而不是像最终用户那样 - “它不工作!”透视。究竟发生了什么?不会发生什么?什么代码被执行?什么代码不是? – BalusC 2010-05-09 05:26:18

+1

PS:在消息编辑器中,请阅读右栏中如何格式化代码(以及页面底部的预览块)。我已经为你修好了(两次)。 – BalusC 2010-05-09 05:27:57

+0

感谢您的提示。这是我第一次提交问题。 – noah 2010-05-09 05:39:43

回答

0

你的数据对象必须是json对象,而不是字符串。

试试这个:

function go_paypal() { 
    data = { req_paypal: 1 }; 

    $.blockUI({ message: '<h1> Going to Paypal...</h1>', css:{background:'#000'} }); 
     $.ajax({ 
      type: "POST", 
      url: "index.php", 
      data: data, 
      success: function(data) { $("#paypal_form").html(data).submit(); } , 
      error: function() { $.unblockUI(); alert('Unable to communicate to server.'); } 
     }); 
} 

我还建议对标签更改为

$("#go_paypal").click(function() { go_paypal(); } 

<a href="javascript:go_paypal();">Paypal</a> 

这样的页面不会被滚动到顶部时,链接被点击

+0

这是什么工作。谢谢检查@GerManson function go_paypal(){ var postData = {req_paypal:1}; $ .blockUI({message:'

Going to Paypal ...

',css:{background:'#000'}}); $就({ 类型: “POST”, URL: “的index.php”, 数据:POSTDATA, 成功:功能(数据){$(document.body的).append(数据); $(” #payPalForm“)。submit();}, error:function(){$ .unblockUI(); alert('Unable to communicate to server。');} }); 返回false; } – noah 2010-05-09 08:41:15

+0

您能否将我的答案标记为已接受? – GerManson 2010-05-09 12:28:05

1

看起来你success函数中,要传递的全球 variable data to html()。尝试将您的变量名称更仔细一点。

试试这个:

function go_paypal() { 

var postData = 'req_paypal=1'; 

$.blockUI({ message: '<h1> Going to Paypal...</h1>',css:{background:'#000'} }); 
    $.ajax({ 
     type: "POST", 
     url: "index.php", 
     data: postData, 
     success: function(data) { $("#paypal_form").html(data); $("#payPalForm").submit(); }, 
     error: function(e) {$.unblockUI(); alert('Unable to communicate to server.'); } 
    }); 
    return false; 
} 
+0

我将变量更改为您的建议,但仍然无法正常工作。还有其他建议吗?我可以添加哪些其他信息来帮助解决此问题? – noah 2010-05-09 05:41:11

1

遗憾的是这里的问题似乎很模糊,因为我们不知道到底是行不通的。我的基本建议是找出不起作用的是打开PHP中的错误报告,然后在该过程的每个步骤中输出大量的输出。在每一步打印变量值,看看它们是否应该是你认为的。打印消息让您知道何时输入子程序等。这有助于缩小出现问题的位置。通常情况下,你会发现你错误地输入了一些东西。

我看到数组$ global,但似乎没有定义。你的意思是$ GLOBALS?我会怀疑这是问题所在。如果您在测试期间在PHP中打开错误报告,则应该看到一些关于未定义变量的投诉。另外,在测试时,请仔细检查所有值,并确保进行模糊测试。一旦问题解决后,一些问题可能就不明显了。

+0

有没有什么办法可以给我发电子邮件或者通过gtalk/aim/skype发送消息给你? – noah 2010-05-09 06:11:29

+0

Ps。感谢您花时间回复! – noah 2010-05-09 06:11:53

+1

@noah,StackOverflow是为您的所有联系人设计的一个问题在此页面上完成。这意味着如果其他人有同样的问题,那么他们会看到任何提示。 – 2010-05-09 06:39:04

1

首先,我会尝试添加一个输入提交到PHP中的表单,并在代码中尝试该表单,而不通过ajax获取并在Firebug中执行提交代码$(“#payPalForm”)。看看它是否有效。

+0

好主意。我会给这个镜头。 – noah 2010-05-09 07:41:30

1

嗯......你试过了吗:<a href="javascript:go_paypal();">Paypal</a>我有同样的问题,它是a的onclick处理程序...所以如果这不起作用,不要给我-1我只是试图帮助基于我以前的经验。 =)

+0

我不会因为花时间尝试而降低评分。这没有用。这很奇怪,因为我可以看到数据发布,http://skitch.com/okdork/dnwm1/get-your-favorite-websites-at-up-to-80-off-appsumo.com 但我不能了解为什么表单不提交仍然... – noah 2010-05-09 07:40:17