对JS变量的ajax请求的JSON响应

时间:2016-11-30 18:11:55

标签: javascript jquery json ajax response

我正在尝试上传带有动态名称的文件并重新获取这些动态名称。

详细说明,我有2页form.phpupload.php。在form.php上按下上传按钮后,请求发送到upload.php,其中2个文件(DLpath和PhotoIDPath)以动态名称上传到服务器,例如:

DLpath = documents / 20161130232311i8hGn0HzJT276415832.png

并且

PhotoIDPath =文档/ 20161130232311SSRqCyIbKKalock.png

工作正常。然后在upload.php上,我将这些文件名编码为JSON数组,即

$response  = array ('DLpath'=>$Dlpath ,'PhotoIDPath'=>$PhotoIDPath);
echo json_encode($response);

萤火虫快照是:

enter image description here

我希望var jsDlpath中的DLpath和var jsPhotoIDPath

中的PhotoIDPath

我的代码(不工作)得到回应是:

complete: function(response) 
    {
    var jsDlpath=response.DLpath;
    var jsPhotoIDPath=response.PhotoIDPath;
alert(jsDlpath+" - "+jsPhotoIDPath)
}

警报显示:

  

undefined - undefine

如果你能帮助我在js变量中gwt这些值,我将非常感谢你。

2 个答案:

答案 0 :(得分:1)

由于您在服务器端对response进行了编码,因此您应该在js方面对其进行解析,您可以使用 $.parsejson()

success: function(response) 
{
    var response = $.parseJson(response);
     //if $.parseJson dont work, use JSON.parse

    var jsDlpath=response.DLpath;
    var jsPhotoIDPath=response.PhotoIDPath;

    alert(jsDlpath+" - "+jsPhotoIDPath)
}

注意:使用success/done回调代替完整。

希望这有帮助。

答案 1 :(得分:0)

如果在纯JavaScript中运行,您会发现有两个响应属性:responseText和responseXML。你可能想要:

var data = JSON.parse(response.responseText);

一个完整的例子,使用来自https://gist.github.com/bitdivine/7ddd943387a4350336dd的curl(但jquery也会很好)在Github上获得未解决的问题:

curl('https://api.github.com/repos/gchq/CyberChef/issues?state=open')
.then((res) => JSON.parse(res.responseText))
.then((data) => console.log(data))