通过PHP脚本中介输出jQuery AJAX响应

时间:2014-10-29 11:19:05

标签: jquery ajax

我有以下成功完成AJAX请求的脚本:

var input = $("#input").val();
$(".pure-button").click(function() {
    $.ajax({
        type: "POST",
        url: "script.php",
        data: input
    }).done(function(data) {
        $("#output").val(data);
    });
});

input包含一个字符串:

grant_type=refresh_token&client_id=abcd-efgh&client_secret=ijkl-mnop&refresh_token=qrst-uvwx

然而,.done()似乎不起作用。在Chrome扩展程序POSTMAN中运行AJAX请求会给我以下输出:

{"access_token":"123-456-789",
"token_type":"bearer",
"refresh_token":"987-654-321",
"expires_in":14399}

但是如何在#output中显示?这是一个空白输入字段。

修改

我认为script.php包含以下代码可能不值得:

<?php
header("Content-type: application/xml");
echo file_get_contents("https://api.example.com");
?>

如果echo file_get_contents()与返回的内容有任何关系?我的初始输入字符串是XML格式吗? POSTed数据是否甚至到达了其他服务器?

第二次编辑:

将我的.done()更改为alert(output);会给我一个只包含null的弹出式窗口。好像我的PHP脚本(解决Cross-Origin问题的一种明显的hacky方法)并没有以我可以使用的方式返回请求。

var input = $("#input").val();
$(".pure-button").click(function() {
    $.ajax({
        type: "POST",
        url: "script.php",
        data: input
    }).done(function(output) {
        alert(output); // returns "null"
    });
});

3 个答案:

答案 0 :(得分:0)

您需要在创建呼叫时传递成功功能,如下所示:

var input = $("#input").val();
$(".pure-button").click(function() {
    $.ajax({
        type: "POST",
        url: "script.php",
        data: input,
        success: function (data) {
          $("#output").val(data);
    });
});

请参阅文档:http://api.jquery.com/jquery.ajax/

答案 1 :(得分:0)

您正在传递数据...尝试使用... data:{input_data:input}并使用.html而不是val()......

$.ajax({
    type: "POST",
    url: "script.php",
    data: {input_data:input},
    success: function (data) {
      $("#output").html(data);  // to display as text... "output" could be a div element
});

答案 2 :(得分:0)

您是否尝试在script.php文件中将响应的内容类型更改为application/json

请参阅:What is the correct JSON content type?