2015-10-22 60 views
1

我搜索了我的问题,但找不到任何解决方案。 我想这很简单,我错过了一些非常简单的事情......但我被困住了。使用Javascript的Ajax POST不起作用

我有一个HTML页面的链接PHP生成的列表,像:

<?php  
    $val = "'"my file with spaces.txt"'"; 
    echo '<a href="javascript:post_filename('.$val.');">click me</a>'; 
?> 

其中$ VAL每一次都是不同的,这取决于一个SQL查询。 和文件名显示正确,因为我将鼠标悬停在链接上的鼠标,我可以在浏览器的左下角写着:

的javascript:post_filename(“我的文件与spaces.txt”);

点击这个链接,会调用这个javascript函数:

<script type="text/javascript"> 
     function post_filename(val){ 
      $.ajax 
      ({ 
       url: 'myurl.php', 
       data: { filename: val }, 
       type: 'POST' 
      }); 
     } 
</script> 

但点击它,什么也不做!没有错误,只是没有发生。

使用开发工具(Chrome上的F12),我看到一切正常...只是mypage.php不显示...是一个带有图形的页面,网站的一部分!

我被困住了...请帮助我! 非常感谢

+2

'data:filename:val,'这是无效的语法! – Sirko

+0

如果你得到一个javascript错误,甚至无法看到它,你有一个更严重的问题。确保你的浏览器中有某种​​开发工具/控制台,否则你将永远无法调试js。 –

+0

将其更改为: data:{filename:val}, 但是仍然没有任何反应。我没有得到任何错误:在点击发生后什么也没有发生...... – Luke85

回答

0

尝试使数据的对象:

<script type="text/javascript"> 
     function post_filename(val){ 
      $.ajax 
      ({ 
       url: 'myurl.php', 
       data: { filename: val }, 
       type: 'POST'; 
      }); 
     } 
</script> 
+0

更改为它,但仍然没有任何反应...... – Luke85

+0

我怀疑你的错误是在服务器上,请检查一边,看看你如何处理在PHP端?也许粘贴一些服务器端代码? –

+0

这是我的代码;其他代码很简单: $ filename =($ _POST ['filename']); echo $ filename; 我在mypage.php – Luke85

1

你的AJAX调用是无效的,应该data是一个字符串,数组或对象。对象可能是你从这里你所做

<script type="text/javascript"> 
     function post_filename(val){ 
      $.ajax 
      ({ 
       url: 'myurl.php', 
       data: { 
        filename: val 
       }, 
       type: 'POST'; 
      }); 
     } 
</script> 
+0

改变了它,但仍然没有任何反应... – Luke85

+0

你是否得到任何形式的错误?我不确定你的网址是否可以工作,因为它充满了空间 – Lynch

+1

这不是[JSON](http://json.org),而是一个普通的旧对象:) – Andreas

0

我想你的代码开始后在做什么,但我做了一些些修改为它工作(我只是看到你有一个分号后类型,我认为这应该是一个逗号,那为什么你会有意想不到的令牌的原因)我的代码工程,并使用此:

<?php  
$val = "'hello.txt'"; 
echo '<a href="#" class="click" file="'.$val.'">click me</a>'; 
?> 

于JavaScript

$('.click').click(function() { 
    $.ajax 
    ({ 
     url: 'myurl.php', 
     data: { filename: $(this).attr('file') }, 
     type: 'POST' 
    }) 
    .done(function (data) { 
     //check the output from your url 
     console.log(data); 
    }) 
    .fail(function (jqXHR, textStatus) { 
     console.log("Request failed: " + textStatus); 
    }); 
}); 
+0

谢谢!但在此之后,我怎么能自动去myurl.php并看到与发布变量的页面?因为现在页面没有显示(是一个页面图形,不仅代码..是网站的一部分) – Luke85

+0

嗨卢克+1为您的问题,我编辑了我的答案。 Ajax实际上用于获取一些数据并将其发布到同一页面,而不是真正意图将一个页面重定向到另一个页面。在点击“点击我”之前,在您的Chrome浏览器中按f12。在'控制台'选项卡上,您可以检查点击链接会发生什么。此代码的'成功'部分将处理来自'myurl.php' – mpalencia

+0

'成功'和'错误'的输出折旧。你应该使用'done'和'fail'。我已经更新了你的答案来证明这一点。 – Styphon