如何发布ajax并获得响应?

问题描述:

我对表单,帖子和回复有问题。在我的表单我调用一个函数(JavaScript的)与阿贾克斯后:如何发布ajax并获得响应?

var vars = "test="+test; 
$.ajax({ 
    type: "POST", 
    url: "index.php", 
    data: vars 
}).done(function(data) { 
    alert(data); 
}).fail(function(data) { 
    alert(data); 
}); 

在我的index.php接收所有数据:

<?php 
    $test = $_POST['test']; 
    //do something 
?> 

后,我得给回值到以前的PHP。 我该怎么办?谢谢

+3

那么什么问题,您也越来越? – 2014-09-02 07:43:07

var vars = "test="+test; 
$.ajax({ 
    type: "POST", 
    url: "index.php", 
    data: vars 
    success: function(html){ 
     alert(html) 
    } 
}); 
的index.php中

,进入后续的代码,并检查

<?php 
    $test = $_POST['test']; 
    //do something 
    echo $test 
?> 

与其他HTTP请求发回数据的方式相同。

header("Content-Type: text/plain"); # Avoid introducing XSS vulnerabilities 
echo $test; 

如果您需要返回一个简单的值,你可以echo它,它会回来的响应。

如果您需要返回更复杂的结构,请将其存储在PHP数组中,例如$response,然后使用echo json_encode($response);将其输出回javascript。

+0

不要'echo json_encode($ response);'不要'header(“Content-Type:application/json”)''。没有它,代码很容易受到XSS攻击。 – Quentin 2014-09-02 07:45:28

+2

我一直都是这样做的。如果问题不多,可否链接到解释为什么不好的资源? – 2014-09-02 07:46:48

+2

它允许攻击者利用嵌入式JavaScript制作一个链接,您的代码将转向它告诉浏览器带有嵌入式JavaScript的HTML。然后他们欺骗受害者点击链接。然后,浏览器将执行该代码,就像它是您的代码一样,具有所有安全特权(访问Cookie,访问本地存储,向您的域进行XHR请求的能力等)。 – Quentin 2014-09-02 07:49:24

这可能有助于

的Javascript

var vars = { test : "test" }; 
$.ajax({ 
    type: "POST", 
    url: "index.php", 
    dataType : 'json', 
    data: vars, 
    success : function(data) { 
     console.log(data); 
    }, 
    error : function(resp) { 
     console.log(resp.responseText); 
    } 
}); 

PHP

<?php 
    $test = $_POST['test']; 
    echo json_encode($test); 
?> 

尝试,并检查控制台日志

+0

不要在没有header(“Content-Type:something/appropriate”)或HTML编码数据的情况下回显用户输入。否则你将会打开一个XSS漏洞。 – Quentin 2014-09-02 07:46:52

+0

什么是XSS?我通常使用它,一切都没有问题,但只有当我想通过跨域来获得数据交易时才使用标题(...) – kefy 2014-09-02 07:49:44

+0

https://www.owasp.org/index.php/XSS – Quentin 2014-09-02 07:50:32

如果必须在JSON返回数据垫然后使用

echo json_encode($test); 

否则,您可以简单地在ajax响应中回显您需要的变量。即

echo $test;