这是我的jQuery:
var docname = $('#doc').val();
function parseXml(xml)
{
$(xml).find("rsp").each(function()
{
alert("success");
});
}
$('#submit').click(function() {
$.ajax({
type: "GET",
url: "img_upload.php",
data: "doc=" + docname,
dataType: "xml",
success: parseXml
});
return false;
});
请注意,#doc是表单文本输入框的id,而#submit是提交按钮的id。如果成功,我想要一个简单的“成功”javascript弹出窗口出现。
这是 img_upload.php ,省略了我的API密钥:
<?php
$filename = $_GET["doc"];
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));
// $data is file data
$pvars = array('image' => base64_encode($data), 'key' => <MY API KEY>);
$timeout = 30;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://imgur.com/api/upload.xml');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
$xml = curl_exec($curl);
curl_close ($curl);
?>
当使用“doc”的GET参数直接访问时,img_upload.php文件将返回以下XML格式:
<?xml version="1.0" encoding="utf-8"?>
<rsp stat="ok">
<image_hash>cxmHM</image_hash>
<delete_hash>NNy6VNpiAA</delete_hash>
<original_image>http://imgur.com/cxmHM.png</original_image>
<large_thumbnail>http://imgur.com/cxmHMl.png</large_thumbnail>
<small_thumbnail>http://imgur.com/cxmHMs.png</small_thumbnail>
<imgur_page>http://imgur.com/cxmHM</imgur_page>
<delete_page>http://imgur.com/delete/NNy6VNpiAA</delete_page>
</rsp>
这里有什么问题? 这是Imgur API page供参考。
答案 0 :(得分:1)
var docname = $('#doc').val();
您的代码中的确切位置以及何时进行评估?
我的猜测是它在&lt; script&gt;时执行。标签已被解析或您已将其包装在$(document).ready()处理程序中。无论哪种方式,它都会在用户实际在输入/文本控件中输入内容之前进行评估,因此docname
将“或”甚至为空。您希望脚本在用户按下提交按钮之前不会获取值
尝试使用
$('#submit').click(function() {
$.ajax({
type: "GET",
url: "img_upload.php",
data: "doc=" + $('#doc').val(),
dataType: "xml",
success: parseXml
});
return false;
});
编辑:更好的是,将data属性作为对象,让jquery处理值的转义。
data: {doc: $('#doc').val()}
答案 1 :(得分:0)
可能是你没有在php脚本中设置标题 - 这应该是你的第一行。
header('Content-Type: text/xml');