jquery.ajax可以从属性Name中发布一个值吗?

时间:2011-03-04 22:39:45

标签: php jquery

jquery.ajax可以从属性Name中发布一个值吗?如果可以,我想将图片的标题apple发送到b.php,然后将数据This is an apple从b.php返回到div#result,谢谢。

a.php只会

<html>
<head>
</head>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script> 
<script language="javascript"> 
$(document).ready(function () {      
var params = "value=" + $('#send').attr(title);  
$.ajax({        
     url:'b.php',        
     type:'post',                 
     dataType:'html',            
     data:params,                
     success:data     
     }); 
function data (html) {     
$("#result").html(html);  
} 
}); 
</script> 
<body> 
<div id="result"></div>
<img id="send" src="apple.jpg" title="apple" />
</body>
</html>

b.php

<?php
echo 'This is an '.$_REQUEST['value'].'.'; 
?> 

2 个答案:

答案 0 :(得分:1)

如果您在属性名称.attr('title')周围加上引号,它应该有效。否则,title将被视为变量,并且由于未定义,因此它将具有值undefined

但更好的方法是将对象传递给data并让jQuery处理正确的编码:

$.ajax({        
    url:'b.php',        
    type:'post',                 
    dataType:'text', // actually, you are not outputting HTML
    data: {value: $('#send').attr('title')},                
    success:data     
}); 

答案 1 :(得分:1)

您没有像在此应用程序中设置普通变量一样设置'values'参数。相反,您可以使用名为“value”的成员创建一个对象,并将其设置为等于图像标题。

var params = new Object();
params.value = $('#send').attr('title');

或者您可以创建params作为文字:

var params = {value: $('#send').attr('title')};