1

これが私の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ポップアップを表示したいと思います。

APIキーを省略したimg_upload.phpは次のとおりです。

<?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>

ここでの問題は何ですか?これが参考のためのImgurAPIページです。

4

2 に答える 2

1
var docname =  $('#doc').val();

これはコードのどこにあり、いつ評価されますか?
私の推測では、<script>タグが解析されたとき、または$(document).ready()ハンドラーでラップされたときに実行されます。いずれにせよ、ユーザーが実際に入力/テキストコントロールに何かを入力する前に評価されるdocnameため、常に''またはnullになります。ユーザーが送信ボタンを押すまで、スクリプトが値をフェッチしないようにします。
で試してみてください

$('#submit').click(function() {
  $.ajax({
    type: "GET",
    url: "img_upload.php",
    data: "doc=" + $('#doc').val(),
    dataType: "xml",
    success: parseXml
  });
  return false;
});

編集:さらに良いことに、データプロパティをオブジェクトにし、jqueryに値のエスケープを処理させます。

data: {doc: $('#doc').val()}
于 2010-04-11T10:33:55.730 に答える
0

phpスクリプトでヘッダーを設定していない可能性があります。これが最初の行になります。

header('Content-Type: text/xml');
于 2010-04-11T10:31:57.963 に答える